2013-05-20 76 views
0

我有几列试图转换为一列,但我在这里遇到了一些问题。将多列(年,月,日)转换为日期

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

我在做转换之前首先在视图上尝试它,但甚至无法获得三列来给出像这样的字符串20090517

任何想法? CASTRIGHT似乎不适合我。

+1

什么SQL Server的版本吗?也不需要将标签“SQL Server”放入标题中。我们知道它是SQL Server。由于标签。 –

+0

使用2008年(但在本地测试)[可将int值转换为sql服务器中的日期时间](http://stackoverflow.com/questions/4847181/convert-int-values-to-datetime-in-sql-server) –

+0

on) – Daniel

回答

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年5月20日

您可以在您的表格中的替换SELECT命令的变量。

+0

请不要使用像'yy'这样的懒惰速记和'mm' - 如果你的意思是'YEAR',输入'YEAR'。原因如下:'SELECT DATEPART(Y,GETDATE());' - 打赌它不会让你第一眼看到它。 –

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 
相关问题