Đặc biệt tập trung vào DATETIME, nơi cho phép các phôi từ int, có hai lý do dẫn đến sự khác biệt.
-
Excel sử dụng cơ số 1 cho ngày tháng, SQL Server sử dụng 0, tức là
01/01/1900
khi chuyển đổi thành một số trong excel là 1, tuy nhiên, trong SQL thì nó là 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT);
Sẽ cho 0. -
Có một lỗi cố ý trong excel để cho phép khả năng di chuyển từ Lotus mà lỗi không cố ý *. Excel coi ngày 29 tháng 2 năm 1900 là một ngày hợp lệ, nhưng năm 1900 không phải là một năm nhuận. SQL không có vấn đề này, vì vậy điều này có nghĩa là có thêm một ngày trong lịch excel.
* ( đọc thêm về điều này cho thấy nó có thể đã được cố ý hoặc được coi là không quan trọng)
BỔ SUNG
Có một Mục hỗ trợ của Microsoft ngày đó: