所以我在从Excel文件导入数据时遇到了这个问题。
造成 2 天差异的原因有两个
原因1
在 SQL Server 中,1900 年 1 月 1 日是第 0 天,而在访问中则是第 1 天。
(我没有使用过 Access,但如果您在 Excel 中输入日期 1900-01-01 并将单元格格式设置为数字,您将得到 1)。
原因2
1900 年不是闰年。 SQL Server 知道这一点,但 Access 不知道。它认为 1900 年 2 月 29 日确实存在。
在您的 SQL Server 中运行它
SELECT DATEDIFF(dd, 0, '1900-01-01')
SELECT DATEDIFF(dd, 0, '1900-02-28')
SELECT DATEDIFF(dd, 0, '1900-03-01')
输出将是
0
58
59
但当你尝试跑步时
SELECT DATEDIFF(dd, 0, '1900-02-29')
你会得到一个错误
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
由于这 2 个原因,您的访问权限可以多获得 2 天的时间。
因此,对于 2012/12/04,Access 返回 41247,而 SQL Server 将为您返回 41245。
希望有帮助。
EDIT
看看 Eric Lippert 的评论,他提到了他和 Joel Spolsky 写的两篇非常有趣的博客文章。