Để đi từ các giá trị Excel, hãy thử cách này:
select date('1899-12-30') + interval <number> days
Ví dụ:
select date('1899-12-30') + interval 40000 days
Trả về ngày 6 tháng 7 năm 2009, giống như trong Excel.
Nói cách khác, bạn có thể nhập giá trị dưới dạng số nguyên và sau đó thực hiện chuyển đổi trong SQL.
Tôi thực sự hơi ngạc nhiên vì ngày 0 trên Excel về cơ bản là ngày 0 tháng 1 năm 1900, tức là ngày 31 tháng 12 năm 1899. Tôi nghi ngờ có vấn đề với việc thiếu năm nhuận vào năm 1900. Excel có giá trị là "60" đại diện là ngày 29 tháng 2 năm 1900. Điều này thật thú vị, tôi đã không nhận ra rằng Excel có lỗi này.
Vì vậy, mã trên hoạt động, cho tất cả các giá trị lớn hơn 61.