我有几列试图转换为一列,但我在这里遇到了一些问题。将多列(年,月,日)转换为日期
问题是,月份或日期可能是单个数字,并且我一直在丢失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年5月20日
您可以在您的表格中的替换SELECT命令的变量。
请不要使用像'yy'这样的懒惰速记和'mm' - 如果你的意思是'YEAR',输入'YEAR'。原因如下:'SELECT DATEPART(Y,GETDATE());' - 打赌它不会让你第一眼看到它。 –
或者
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
什么SQL Server的版本吗?也不需要将标签“SQL Server”放入标题中。我们知道它是SQL Server。由于标签。 –
使用2008年(但在本地测试)[可将int值转换为sql服务器中的日期时间](http://stackoverflow.com/questions/4847181/convert-int-values-to-datetime-in-sql-server) –
on) – Daniel