Berkonsentrasi secara khusus pada DATETIME, di mana pemeran dari int diizinkan, ada dua alasan untuk perbedaan tersebut.
-
Excel menggunakan basis 1 untuk tanggal, SQL Server menggunakan 0, yaitu
01/01/1900
ketika dikonversi ke angka di excel adalah 1, namun, dalam SQL itu adalah 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT);
Akan memberikan 0. -
Ada kesalahan yang disengaja di excel untuk memungkinkan portabilitas dari Lotus di mana bug itu tidak disengaja*. Excel menganggap 29 Februari 1900 sebagai tanggal yang valid, tetapi 1900 bukan tahun kabisat. SQL tidak memiliki masalah ini, jadi ini berarti ada satu hari ekstra di kalender excel.
*(bacaan lebih lanjut tentang ini menunjukkan bahwa ini mungkin disengaja, atau dianggap tidak penting)
TAMBAHKAN
Ada Item Dukungan Microsoft yang menyatakan: