我对 SQL 比较陌生,所以如果这是一个愚蠢的问题,请原谅我。我已经尝试了太长时间才能让它发挥作用。
我在表 A 中有一个列,它是一个名为 ConstructionYear 的浮点列。它填充了一个简单的 4 位数年份(即 2010、2005、1972 等)。我需要使用这些年份填充表 B 的 YearBuilt 日期时间字段。我已经搜索和搜索并尝试了我在网上找到的各种不同的 convert() 和 cast() 组合,但它不起作用。
我想要发生的是这样的:
'2008' -> '2008-01-01 00:00:00.000'
'2005' -> '2005-01-01 00:00:00.000'
'1986' -> '1986-01-01 00:00:00.000'
而不是当前正在发生的事情(使用CAST(ConstructionYear AS DATETIME)
):
'2008' -> '1905-07-02 00:00:00.000'
'2010' -> '1905-07-04 00:00:00.000'
'1984' -> '1905-06-08 00:00:00.000'
编辑:解决方案:cast(convert(varchar,@ConstructionYear) AS DATETIME)
所以我的问题有两个主要原因(除了我是 sql 新手)。
我不知道 SQL Server 用于日期时间的 1900 纪元。由于我看到的所有 1905 年的日期时间,我可以看出正在发生一些事情,但我不知道它占用了我的 2005 年并将其计算为从 1900 年开始的日子。
1753 年。为什么 1753 年是我们可以使用的最早年份?在我在这里发布我的问题之前,我可能有正确的语法,但它没有运行,因为我的数据早于 1753 年。我认为错误与我的代码有关。