Are you also always looking in the BOL if you have to deal with datetime?
This stored procedure could bring some light in the dark...
You will have to call it with the following statement:
Select dbo.fn_formatdate(getdate(),'formated date: \TT\MM\YYYY \hh:\mi:\ss \ms Week: \wk Weekday: \DW Quarter: \qq'),getdate()
The formatstring can contain severall formatstrings and will bring up all datetimeparts you want, including some additional textparts...
CREATE FUNCTION [dbo].[fn_formatdate](@dat datetime,@format varchar(255))
RETURNS varchar(255)
AS
BEGIN
declare @ret varchar(255)
declare @i int
-- year 4 digits
set @ret=replace(@format,'\jjjj',cast(year(@dat) as varchar(4)))
-- year 4 digits
set @ret=replace(@ret,'\yyyy',cast(year(@dat) as varchar(4)))
-- day 2 digits
set @ret=replace(@ret,'\dd',right('0'+cast(day(@dat) as varchar(2)),2))
-- weekday 1 digit
set @ret=replace(@ret,'\dw',cast(datepart(dw,@dat) as varchar(1)))
-- day of year
set @ret=replace(@ret,'\dy',right('00'+cast(day(@dat) as varchar(3)),3))
-- hour 2 digits
set @ret=replace(@ret,'\hh',right('0'+cast(datepart(hh,@dat) as varchar(2)),2))
-- year 2 digits
set @ret=replace(@ret,'\jj',right(cast(year(@dat) as varchar(4)),2))
-- minute 2 digits
set @ret=replace(@ret,'\mi',right('0'+cast(datepart(mi,@dat) as varchar(2)),2))
-- month 2 digits
set @ret=replace(@ret,'\mm',right('0'+cast(month(@dat) as varchar(2)),2))
-- milliseconds 3 digits
set @ret=replace(@ret,'\ms',right('00'+cast(datepart(ss,@dat) as varchar(3)),3))
-- quarter 2 digits
set @ret=replace(@ret,'\qq',right('0'+cast(datepart(qq,@dat) as varchar(2)),2))
-- seconds 2 digits
set @ret=replace(@ret,'\ss',right('0'+cast(datepart(ss,@dat) as varchar(2)),2))
-- day 2 digits
set @ret=replace(@ret,'\tt',right('0'+cast(day(@dat) as varchar(2)),2))
-- week 2 digits
set @ret=replace(@ret,'\wk',right('0'+cast(datepart(wk,@dat) as varchar(2)),2))
-- year 2 digits
set @ret=replace(@ret,'\yy',right(cast(year(@dat) as varchar(4)),2))
-- day 1-2 digits
set @ret=replace(@ret,'\d',cast(day(@dat) as varchar(2)))
-- hour 1-2 digits
set @ret=replace(@ret,'\h',cast(datepart(hh,@dat) as varchar(2)))
-- month 1-2 digits
set @ret=replace(@ret,'\m',cast(month(@dat) as varchar(2)))
-- minute 2 digits
set @ret=replace(@ret,'\n',right('0'+cast(datepart(mi,@dat) as varchar(2)),2))
-- quarter 1 digit
set @ret=replace(@ret,'\q',cast(datepart(qq,@dat) as varchar(1)))
-- seconds 1-2 digits
set @ret=replace(@ret,'\s',cast(datepart(ss,@dat) as varchar(2)))
-- day 1-2 digits
set @ret=replace(@ret,'\t',cast(day(@dat) as varchar(2)))
-- week 1-2 digits
set @ret=replace(@ret,'\w',cast(datepart(wk,@dat) as varchar(2)))
return @ret
END
GO