T-SQL转换日期显示格式
一般情况之下,存储日期至数据库中,不必在意它的显示格式,只要是日期即可,在程序中显法时,才会去控制它的显示格式。
但是,当你是开发SQL程序,你要求不了前台程序员按照你的想法去做,把日期显示某种格式,他们只管调用你的存储过程。解决这样的问题,我们把SQL输出结果就控制为最终结果,有关这方面企业内网程式应用较多。
你可以参考下面SQL自定义函数,需要的地方调用即可。
View Code
CREATE FUNCTION [dbo].[ConvertDate]
(
@InputDate DATETIME, --输入日期,或是原格式日期
@DateFormat NVARCHAR(10) --日期显示格式
)
RETURNS NVARCHAR(10)
AS
BEGIN
DECLARE @DtFormat NVARCHAR(10) = @DateFormat
IF CHARINDEX('YYYY', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'YYYY', STR(YEAR(@InputDate), 4))
ELSE
IF CHARINDEX('YY', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'YY', SUBSTRING(STR(YEAR(@InputDate), 4), 3, 2))
IF CHARINDEX('MM', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'MM', STR(MONTH(@InputDate), 2))
IF CHARINDEX('DD', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'DD', STR(DAY(@InputDate), 2))
SET @DtFormat = REPLACE(@DtFormat, ' ', '0')
RETURN @DtFormat
END
(
@InputDate DATETIME, --输入日期,或是原格式日期
@DateFormat NVARCHAR(10) --日期显示格式
)
RETURNS NVARCHAR(10)
AS
BEGIN
DECLARE @DtFormat NVARCHAR(10) = @DateFormat
IF CHARINDEX('YYYY', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'YYYY', STR(YEAR(@InputDate), 4))
ELSE
IF CHARINDEX('YY', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'YY', SUBSTRING(STR(YEAR(@InputDate), 4), 3, 2))
IF CHARINDEX('MM', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'MM', STR(MONTH(@InputDate), 2))
IF CHARINDEX('DD', @DtFormat) > 0
SET @DtFormat = REPLACE(@DtFormat, 'DD', STR(DAY(@InputDate), 2))
SET @DtFormat = REPLACE(@DtFormat, ' ', '0')
RETURN @DtFormat
END
实例操作,调用函数:
SELECT [dbo].[ConvertDate] ('2011/06/30','MM/dd/yyyy')
执行结果: