CREATE FUNCTION DATE_FORMAT
(@now
DATETIME, @format
VARCHAR(2000))
RETURNS VARCHAR(2000) AS
BEGIN
SELECT @format = str_replace
(@format,
‘%r’,
‘%h:%i:%s %p’)
SELECT @format = str_replace
(@format,
‘%T’,
‘%H:%i:%s’)
SELECT @format = str_replace
(@format,
‘%b’,
SUBSTRING(DATENAME(mm, @now
),
1,
3) )
SELECT @format = str_replace
(@format,
‘%M’,
DATENAME(mm, @now
))
SELECT @format = str_replace
(@format,
‘%a’,
SUBSTRING(DATENAME(dw, @now
),
1,
3) )
SELECT @format = str_replace
(@format,
‘%W’,
DATENAME(dw, @now
))
SELECT @format = str_replace
(@format,
‘%w’,
RIGHT(REPLICATE(‘0′,
2) +
CONVERT(VARCHAR(2),
DATEPART(dw, @now
) -
1),
2) )
SELECT @format = str_replace
(@format,
‘%U’,
RIGHT(REPLICATE(‘0′,
2) +
CONVERT(VARCHAR(2),
DATEPART(wk, @now
) -
1),
2) )
SELECT @format = str_replace
(@format,
‘%V’,
RIGHT(REPLICATE(‘0′,
2) +
CONVERT(VARCHAR(2),
DATEPART(wk, @now
)),
2) )
SELECT @format =
CASE
WHEN DATEPART(dy, @now) = 1
THEN str_replace(@format, ‘%u’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(wk, @now) - 1), 2))
ELSE str_replace(@format, ‘%u’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(wk, DATEADD(dw, -1, @now) ) - 1 ), 2) )
END
SELECT @format =
CASE
WHEN DATEPART(dy, @now) = 1
THEN str_replace(@format, ‘%v’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(wk, @now)), 2))
ELSE str_replace(@format, ‘%v’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(wk, DATEADD(dw, -1, @now) )), 2) )
END
SELECT @format = str_replace(@format, ‘%c’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(mm, @now)), 2))
SELECT @format = str_replace(@format, ‘%m’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(mm, @now)), 2))
SELECT @format = str_replace(@format, ‘%d’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(dd, @now)), 2))
SELECT @format = str_replace(@format, ‘%e’, CONVERT(VARCHAR(2), DATEPART(dd, @now)))
SELECT @format = str_replace(@format, ‘%y’, SUBSTRING( CONVERT(VARCHAR(4), DATEPART(yy, @now)), 3, 2))
SELECT @format = str_replace(@format, ‘%Y’, CONVERT(VARCHAR(4), DATEPART(yy, @now)))
SELECT @format = str_replace(@format, ‘%X’, CONVERT(VARCHAR(4), DATEPART(yy, @now)))
SELECT @format = str_replace(@format, ‘%x’, CONVERT(VARCHAR(4), DATEPART(yy, @now)))
SELECT @format = str_replace(@format, ‘%H’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(hh, @now)), 2))
SELECT @format =
CASE
WHEN DATEPART(hh, @now) > 12
THEN str_replace(@format, ‘%h’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(hh, @now) - 12), 2))
ELSE str_replace(@format, ‘%h’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(hh, @now)), 2))
END
SELECT @format =
CASE
WHEN DATEPART(hh, @now) > 12
THEN str_replace(@format, ‘%I’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(hh, @now) - 12), 2))
ELSE str_replace(@format, ‘%I’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(hh, @now)), 2))
END
SELECT @format = str_replace(@format, ‘%k’, CONVERT(VARCHAR(2), DATEPART(hh, @now)))
SELECT @format =
CASE
WHEN DATEPART(hh, @now) > 12
THEN str_replace(@format, ‘%l’, CONVERT(VARCHAR(2), DATEPART(hh, @now) - 12))
ELSE str_replace(@format, ‘%l’, CONVERT(VARCHAR(2), DATEPART(hh, @now)))
END
SELECT @format =
CASE
WHEN DATEPART(hh, @now) > 12
THEN str_replace(@format, ‘%p’, ‘PM’)
ELSE str_replace(@format, ‘%p’, ‘AM’)
END
SELECT @format = str_replace(@format, ‘%i’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(mi, @now)), 2))
SELECT @format = str_replace(@format, ‘%s’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(ss, @now)), 2))
SELECT @format = str_replace(@format, ‘%S’, RIGHT(REPLICATE(‘0′, 2) + CONVERT(VARCHAR(2), DATEPART(ss, @now)), 2))
SELECT @format = str_replace(@format, ‘%f’, RIGHT(REPLICATE(‘0′, 6) + CONVERT(VARCHAR(6), DATEPART(ms, @now) * 1000), 6))
SELECT @format = str_replace(@format, ‘%j’, RIGHT(REPLICATE(‘0′, 3) + CONVERT(VARCHAR(3), DATEPART(dy, @now)), 3))
SELECT @format = str_replace(@format, ‘%%’, ‘%’)
RETURN @format
END