• 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