将多个列(年,月,日)转换为日期

时间:2013-05-20 22:06:55

标签: sql sql-server sql-server-2008 sql-view

我有一些我想要转换为一列的专栏,但我在这里遇到了一些问题。

问题是月份或日期可能是单个数字,而且我一直在丢失0

我在转换之前首先在视图上尝试它,但是甚至无法让三列提供像20090517这样的字符串。

有什么想法吗? CASTRIGHT似乎没有为我做这件事。

3 个答案:

答案 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)