因此,当我从 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。
希望它有所帮助。
编辑
看看 Eric Lippert 的评论,他提到了他和 Joel Spolsky 的 2 篇非常有趣的博客文章。