我有一些我想要转换为一列的专栏,但我在这里遇到了一些问题。
问题是月份或日期可能是单个数字,而且我一直在丢失0
。
我在转换之前首先在视图上尝试它,但是甚至无法让三列提供像20090517
这样的字符串。
有什么想法吗? CAST
和RIGHT
似乎没有为我做这件事。
答案 0 :(得分:2)
您可以使用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命令中的变量替换为表格中的变量。
答案 1 :(得分:1)
可选地
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
答案 2 :(得分:0)
我最终使用
dateadd(month,(@YEAR-1900)* 12 + @MONTH - 1,0) + (@DAY-1)