0

我不明白为什么这个 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)

我哪里做错了?

谢谢!

4

1 回答 1

0

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

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

(请注意,我假设 SQL Server -阅读此博客文章了解日期格式背后的原因。如果您使用不同的 RDBMS,则需要对其进行翻译)。
我很好奇您为什么要转换为varchar(5),因为我所知道的几乎每个 RDBMS 都会在遇到第五位数字时引发错误。

于 2013-03-20T15:59:28.973 回答