Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengapa 1899-12-30 tanggal nol di Access/SQL Server, bukan 31/12?

Mempertahankan kompatibilitas dengan Lotus 1-2-3 di masa lalu, yang memiliki bug karena mengira tahun 1900 adalah tahun kabisat (atau berpura-pura?).

Penjelasannya terlalu panjang untuk dikutip, tapi demi penasaran, berikut beberapa cuplikannya.

  • http://blogs.msdn.com/b/ericlippert/archive/2003/09/16/53013.aspx

  • http://www.joelonsoftware.com/items/2006/06/16.html

1900 bukan tahun kabisat.

"Ini bug di Excel!" seruku.

"Yah, tidak juga," kata Ed. "Kami harus melakukannya seperti itu karena kami harus dapat mengimpor lembar kerja Lotus 123."

"Jadi, ini bug di Lotus 123?"

"Ya, tapi mungkin disengaja. Lotus harus muat di 640K. Itu tidak banyak memori. Jika Anda mengabaikan 1900, Anda dapat mengetahui apakah tahun tertentu adalah tahun kabisat hanya dengan melihat apakah dua bit paling kanan adalah nol. Itu sangat cepat dan mudah. ​​Orang-orang Lotus mungkin berpikir tidak masalah untuk menjadi salah selama dua bulan di masa lalu. Sepertinya orang-orang Basic ingin anal tentang dua bulan itu, jadi mereka memindahkan zaman suatu hari kembali."

  • http://www.cpearson.com/excel/datetime.htm

Sebenarnya, angka ini satu lebih besar dari jumlah hari yang sebenarnya. Ini karena Excel berperilaku seolah-olah tanggal 1900-Feb-29 ada. Itu tidak. Tahun 1900 bukanlah tahun kabisat (tahun 2000 adalah tahun kabisat). Di Excel, hari setelah 1900-28 Februari adalah 1900-29 Februari. Kenyataannya, sehari setelah 1900-28 Februari adalah 1900-Mar-1 . Ini bukan "bug". Memang, itu adalah dengan desain. Excel bekerja dengan cara ini karena itu benar-benar bug di Lotus 123. Ketika Excel diperkenalkan, 123 memiliki hampir seluruh pasar untuk perangkat lunak spreadsheet. Microsoft memutuskan untuk melanjutkan bug Lotus, agar sepenuhnya kompatibel. Pengguna yang beralih dari 123 ke Excel tidak perlu melakukan perubahan apa pun pada data mereka. Selama semua tanggal Anda lebih dari 1900-Mar-1, ini seharusnya tidak menjadi masalah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat, tidak merusak, kinerja SQL Server

  2. SQL MAX dari beberapa kolom?

  3. TAN() Contoh di SQL Server

  4. Memahami Ukuran Penyimpanan 'datetime2' di SQL Server

  5. Mengapa EF menghasilkan kueri SQL dengan pemeriksaan nol yang tidak perlu?