そのため、Excel ファイルからデータをインポートするときにこの問題が発生しました。
2日間の違いがある理由は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 つの非常に興味深いブログ投稿について言及しています。