我有几列要转换为一列,但我在这里遇到了一些问题。
问题是月份或日期可能是个位数,而我一直在丢失0
。
在进行转换之前,我首先在视图上尝试它,但甚至无法让三列给出这样的字符串20090517
。
有任何想法吗?CAST
并且RIGHT
似乎没有为我做这件事。
我有几列要转换为一列,但我在这里遇到了一些问题。
问题是月份或日期可能是个位数,而我一直在丢失0
。
在进行转换之前,我首先在视图上尝试它,但甚至无法让三列给出这样的字符串20090517
。
有任何想法吗?CAST
并且RIGHT
似乎没有为我做这件事。
您可以使用 DATEADD
DECLARE @YEAR int
DECLARE @MONTH int
DECLARE @DAY int
SET @YEAR = 2013
SET @MONTH = 5
SET @DAY = 20
SELECT CONVERT(DATE,
DATEADD(yy, @YEAR -1900, DATEADD(mm, @MONTH -1 ,DATEADD(dd, @DAY -1, 0))))
结果是 2013-05-20
您可以将 SELECT 命令中的变量替换为表中的变量。
或者
DECLARE @YEAR int
DECLARE @MONTH int
DECLARE @DAY int
SET @YEAR = 2013
SET @MONTH = 5
SET @DAY = 20
SELECT RIGHT('0000'+ CONVERT(VARCHAR,@Year),4) + RIGHT('00'+ CONVERT(VARCHAR,@Month),2) + RIGHT('00'+ CONVERT(VARCHAR,@Day),2)
给
20130520
我最终使用
dateadd(month,(@YEAR-1900)* 12 + @MONTH - 1,0) + (@DAY-1)