Hallo,
very good function often needed.
German SQLservers need adaptation.
Since Wednesday in German "Mittwoch" gets corrupted by the MI=minute mask, some workarounds are necessary. I added month and day without leading zero.
/*
YYYY - Year, 4 digit
YY - Year, 2 digit
MMMM - Monats-Name
MMM - Monats-Name, erste 3 Buchstaben
MM - Monat 2-stellig, führende 0
XM - Monat ohne führende 0
DDDD - Wochentag
WOTAG- Wochentag
DDD - Wochentag, erste 3 Buchstaben
DD - Tag 2 stellig führende 0
XD - Tag ohne führende 0
hh - Stunde (24 Stunden, 2 stellig, führende 0
mi - Minuten, 2 stellig, führende 0
ss - Sekunden, 2 stellig, führende 0
*/
alter FUNCTION [dbo].[DateFormattedByMask]
(
@InputDate DATETIME,
@Mask NVARCHAR(40)
)
RETURNS VARCHAR(40)
AS
BEGIN
SELECT @Mask = REPLACE(@Mask,'YYYY',DATENAME(YEAR,@InputDate))
SELECT @Mask = REPLACE(@Mask,'YY',RIGHT(DATENAME(YEAR,@InputDate),2))
SELECT @Mask = REPLACE(@Mask,'MMMM', DATENAME(MONTH,@InputDate))
SELECT @Mask = REPLACE(@Mask,'MMM', LEFT(DATENAME(MONTH,@InputDate),3))
SELECT @Mask = REPLACE(@Mask,'MM', RIGHT('0'+CAST(MONTH(@InputDate) AS NVARCHAR(2)),2))
SELECT @Mask = REPLACE(@Mask,'XM', CAST(MONTH(@InputDate) AS NVARCHAR(2)))
SELECT @Mask = REPLACE(@Mask,'DDDD', 'WOTAG')
SELECT @Mask = REPLACE(@Mask,'DDD', LEFT(DATENAME(dw,@InputDate),3))
SELECT @Mask = REPLACE(@Mask,'DD', RIGHT('0'+DATENAME(DAY,@InputDate),2))
SELECT @Mask = REPLACE(@Mask,'XD', DATENAME(DAY,@InputDate))
SELECT @Mask = REPLACE(@Mask,'hh', RIGHT('0'+DATENAME(hh,@InputDate),2))
SELECT @Mask = REPLACE(@Mask,'mi', RIGHT('0'+DATENAME(mi,@InputDate),2))
SELECT @Mask = REPLACE(@Mask,'ss', RIGHT('0'+DATENAME(ss,@InputDate),2))
SELECT @Mask = REPLACE(@Mask,'WOTAG', DATENAME(dw,@InputDate))
RETURN @Mask
END