尝试计算自 1900 年 1 月 1 日以来的天数并且 DateDiff 函数已关闭

Trying to calculate the number of days since 1/1/1900 and the DateDiff function is off

我正在尝试计算从 1900 年 1 月 1 日到 2019 年 5 月 1 日之间经过的天数。

我已经尝试过使用多个日期并得到相同的结果。 返回值是休息 2 天。

--
-- calculate the number of days between 1/1/1900 and 5/1/2018
--
SELECT DATEDIFF(DAY,CONVERT(DATE,'1/1/1900'),CONVERT(DATE,'5/1/2018'))

预期结果:43221 实际结果:43219

感谢您的帮助!

DATEDIFF returns 两个日期之间 的天数。因此,如果您希望将 1900-01-01 编号为第 1 天,则必须对从 DATEDIFF 获得的任何差值加 1。在 Excel 中,第 0 天是 1899-12-31。

其次,Excel 将 1900 年视为闰年,29-Feb-1900(Excel 编号系统 iirc 中的第 60 天)。这是 Lotus 1-2-3 的遗留物,它最初使用了闰年的简化算法(将每年被 4 整除的年份视为一个闰年),并且为了向后兼容而保留

如果您将这两个错误结合起来,这些将导致您的 off-by-two 结果。