转换为转换为varchar的整数,并将字符串附加到日期时间

时间:2013-03-20 15:29:27

标签: sql datetime integer sql-server-2012 varchar

我无法弄清楚为什么这个sql代码段不起作用:

cast(cast(b.remodelyear as varchar(5)) + '-01-01' as datetime)

重塑年份是由一年组成的整数(例如:2012年)。我将它投射到varchar并附加一个月和一天,然后我将整个事件投射到日期时间。

这个有效:

cast(cast(Yr as varchar(5)) + '-' + cast(Mth as varchar(5)) + '-' + '01' as datetime)

我哪里出错了?

谢谢!

1 个答案:

答案 0 :(得分:0)

就个人而言,我不会为此连接字符串,我会执行一些(琐碎的)日期数学:

SELECT DATEADD(year, b.remodelyear - 1, '00010101')
FROM <sometable> b

(请注意,我假设SQL Server - read this blog post用于日期格式背后的推理。如果您使用的是另一个RDBMS,则需要翻译。) 我很好奇为什么你要转向varchar(5),因为我知道的几乎所有RDBMS都会在遇到第五个数字时抛出错误。