31.10.2015
のセルでH9
を入力した場合、他のセルに式を入力した場合= H9+A
セル42308A
が届きます。SQL Serverと数字の変換に差異を与える
私はCONVERT(varchar, CONVERT(int, CONVERT(datetime, [Due Date])))
を使用し、42306
を取得します。
なぜ2の差が生じるのですか?
31.10.2015
のセルでH9
を入力した場合、他のセルに式を入力した場合= H9+A
セル42308A
が届きます。SQL Serverと数字の変換に差異を与える
私はCONVERT(varchar, CONVERT(int, CONVERT(datetime, [Due Date])))
を使用し、42306
を取得します。
なぜ2の差が生じるのですか?
これを読んで、私は2つの理由があると思います。
Excelでのシリアル番号の最初の日付は1900-01-01です。これはシリアル番号が1です。https://support.office.com/en-gb/article/DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252 SQLでは、この日付の数値は0ではなく1です。そのため、1の違いがあります。
2番目の単位は少し奇妙です。 Excelでは、日付が存在しないにもかかわらず1900-02-29日付がシリアル番号を持っています(2月29日は世紀の回を除いて4年ごとに存在します)。 SQL 1900-02-29では存在しません(これを試してみてくださいSELECT CONVERT(int, CONVERT(datetime, '19000229'))
)。このように、2番目の単位の違いを説明します。
実際にSQLとExcelの間の日付の差が0に等しいSQL 01/01/1900
で、逆に、1に等しいエクセル01/01/1900
で、このために1に等しいarticle