我无法弄清楚为什么这个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)
我哪里出错了?
谢谢!
答案 0 :(得分:0)
就个人而言,我不会为此连接字符串,我会执行一些(琐碎的)日期数学:
SELECT DATEADD(year, b.remodelyear - 1, '00010101')
FROM <sometable> b
(请注意,我假设SQL Server - read this blog post用于日期格式背后的推理。如果您使用的是另一个RDBMS,则需要翻译。)
我很好奇为什么你要转向varchar(5)
,因为我知道的几乎所有RDBMS都会在遇到第五个数字时抛出错误。