我正在从 SQL 数据库中提取数据。我有几列日期需要转换为 Int 类型,但是当我这样做时,日期会发生变化(-2 天)。我尝试了“转换”和“转换”,结果总是一样。 转换为其他类型工作正常并返回正确的日期,但对我来说不起作用。我只需要日期时间中的日期部分,并且 Excel 需要将其识别为日期。
为什么会发生这种情况?有什么想法如何排序吗?
我正在使用以下查询:
SELECT wotype3, CONVERT(INT,wo_date2 ,103), CAST(duedate AS int) FROM Tasks WHERE
duedate > DATEADD(DAY,1, GETDATE())
AND wo_date2>0
AND wo_date2<DATEADD(WEEK,3,GETDATE())
ORDER BY wotype3
最佳答案
我在这方面遇到了很大的问题,用用户使用 Excel 创建的“预期结果”检查 SQL Server 的计算结果。
仅仅因为这 2 天的日期差异,我们就出现了差异。
为什么会发生这种情况?
两个原因:
SQL Server 使用从 1900 年 1 月 1 日开始的从零开始的日期计数,但 Excel 使用从 1900 年 1 月 1 日开始的从 1 开始的日期计数。
Excel 有一个错误(天哪!),它会认为 1900 年是闰年。事实并非如此。 SQL Server 正确地拒绝让您拥有包含“
29-Feb-1900
”的日期值。
将这两个差异结合起来,这就是为什么从 1900 年 3 月 1 日起的所有日期总是晚 2 天的原因。
显然,这个 Excel 错误是一个已知问题,以使其与 Lotus 1-2-3 保持一致。
从现在开始,我想我会用同样的借口来证明我的代码中的错误是合理的。
;-)
关于sql-server - Excel 错误地将 Date 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981258/