在日期31.10.2015
excel中的單元格H9
,如果我把公式在其他單元= H9+A
我收到單元格42308A
。我在使用CONVERT(varchar, CONVERT(int, CONVERT(datetime, [Due Date])))
並得到42306
。SQL Server和Excel日期到數字轉換給予區別
爲什麼我得到2的差異?
在日期31.10.2015
excel中的單元格H9
,如果我把公式在其他單元= H9+A
我收到單元格42308A
。我在使用CONVERT(varchar, CONVERT(int, CONVERT(datetime, [Due Date])))
並得到42306
。SQL Server和Excel日期到數字轉換給予區別
爲什麼我得到2的差異?
我認爲有兩個原因。
在Excel中的序列號的第一個日期是1900-01-01。這有一個序列號1. https://support.office.com/en-gb/article/DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252 在SQL這個日期有一個數字數字0不是1.因此,帳戶差異1.
第二個單位有點奇怪。在Excel中,日期1900-02-29具有序列號,即使該日期不存在(2月29日除了在世紀之交外,每4年存在一次)。在SQL 1900-02-29不存在(嘗試這樣做SELECT CONVERT(int, CONVERT(datetime, '19000229'))
)。這就是第二個單位差異。
SQL之間實際日期的差異和Excel等於1。正因爲如此,在Excel中01/01/1900
等於1,相反,在SQL 01/01/1900
等於0閱讀本article