1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | Alter Function [dbo].[fn_format_date] (@Datetime DateTime, @FormatMask NVarChar(32)) Returns NvarChar(32) As Begin Declare @StringDate NVarChar(32) Set @StringDate = @FormatMask If (CharIndex (N'YYYY',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'YYYY', DateName(YY, @Datetime)) End If (CharIndex (N'YY',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'YY', Right(DateName(YY, @Datetime),2)) End If (CharIndex (N'MM',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'MM', Right(N'0'+Convert(VARCHAR,DatePart(MM, @Datetime)),2)) End If (CharIndex (N'M',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'M', Convert(VARCHAR,DatePart(MM, @Datetime))) End If (CharIndex (N'DD',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'DD', Right(N'0'+DateName(DD, @Datetime),2)) End If (CharIndex (N'D',@StringDate) > 0) Begin Set @StringDate = Replace(@StringDate, N'D', DateName(DD, @Datetime)) End Return @StringDate End Go Set Nocount On Declare @lDateTime Datetime = '20110506' Print [dbo].[fn_format_date] (@lDateTime, 'MM/DD/YYYY') Print [dbo].[fn_format_date] (@lDateTime, 'DD/MM/YYYY') Print [dbo].[fn_format_date] (@lDateTime, 'M/DD/YYYY') Print [dbo].[fn_format_date] (@lDateTime, 'M/D/YYYY') Print [dbo].[fn_format_date] (@lDateTime, 'M/D/YY') Print [dbo].[fn_format_date] (@lDateTime, 'MM/DD/YY') Print [dbo].[fn_format_date] (@lDateTime, 'YYYY/MM/DD') Print [dbo].[fn_format_date] (@lDateTime, 'YYYYMMDD') Print [dbo].[fn_format_date] (@lDateTime, 'YYYY-MM-DD') /* 05/06/2011 06/05/2011 5/06/2011 5/6/2011 5/6/11 05/06/11 2011/05/06 20110506 2011-05-06 */ |
Leave a Reply