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

Apa pentingnya 1/1/1753 di SQL Server?

Keputusan untuk menggunakan 1 Januari 1753 (1753-01-01 ) sebagai nilai tanggal minimum untuk suatu datetime di SQL Server kembali ke asal Sybase-nya.

Pentingnya tanggal itu sendiri dapat dikaitkan dengan pria ini.

Philip Stanhope, Earl ke-4 Chesterfield. Siapa yang mengarahkan Undang-Undang Kalender (Gaya Baru) 1750 melalui Parlemen Inggris. Ini disahkan untuk adopsi kalender Gregorian untuk Inggris dan kemudian koloni.

Ada beberapa hari yang hilang (link arsip internet) dalam kalender Inggris pada tahun 1752 ketika penyesuaian akhirnya dibuat dari kalender Julian. 3 September 1752 hingga 13 September 1752 hilang.

Kalen Delaney menjelaskan pilihannya seperti ini

Jadi, dengan 12 hari yang hilang, bagaimana Anda bisa menghitung tanggal? Misalnya, bagaimana cara menghitung jumlah hari antara 12 Oktober 1492 dan 4 Juli 1776? Apakah Anda termasuk yang hilang 12 hari? Untuk menghindari pemecahan masalah ini, pengembang Sybase SQL Server asli memutuskan untuk tidak mengizinkan tanggal sebelum 1753. Anda dapat menyimpan tanggal lebih awal dengan menggunakan bidang karakter, tetapi Anda tidak dapat menggunakan fungsi tanggal dan waktu dengan tanggal sebelumnya yang Anda simpan di bidang karakter.

Pilihan tahun 1753 memang tampak agak anglosentris namun karena banyak negara Katolik di Eropa telah menggunakan kalender selama 170 tahun sebelum penerapan Inggris (awalnya tertunda karena ditentang oleh gereja). Sebaliknya banyak negara tidak mereformasi kalender mereka sampai jauh kemudian, 1918 di Rusia. Memang Revolusi Oktober 1917 dimulai pada 7 November di bawah kalender Gregorian.

Keduanya datetime dan datetime2 yang baru tipe data yang disebutkan dalam jawaban Joe jangan mencoba menjelaskan perbedaan lokal ini dan cukup gunakan Kalender Gregorian.

Jadi dengan rentang datetime2 yang lebih besar

SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)

Kembali

Sep  8 1752 12:00AM

Satu poin terakhir dengan datetime2 tipe data adalah bahwa ia menggunakan kalender Gregorian proleptik yang diproyeksikan ke belakang jauh sebelum benar-benar ditemukan sehingga penggunaan terbatas dalam menangani tanggal-tanggal bersejarah.

Ini kontras dengan implementasi Perangkat Lunak lain seperti kelas Kalender Gregorian Java yang secara default mengikuti Kalender Julian untuk tanggal hingga 4 Oktober 1582 kemudian melompat ke 15 Oktober 1582 di kalender Gregorian yang baru. Ini menangani model Julian tahun kabisat dengan benar sebelum tanggal itu dan model Gregorian setelah tanggal itu. Tanggal cutover dapat diubah oleh penelepon dengan memanggil setGregorianChange() .

Sebuah artikel yang cukup menghibur membahas beberapa keanehan dengan adopsi kalender dapat ditemukan di sini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Keamanan Ketat CLR di SQL Server 2017

  2. Memahami Alias ​​Kolom di Select Query di SQL Server - Tutorial SQL Server / TSQL Bagian 115

  3. 3 Cara Mengembalikan Daftar Pekerjaan Agen SQL Server (T-SQL)

  4. Berbagai cara untuk menggunakan fungsi tanggal SQL CONVERT

  5. SQL:huruf besar hanya huruf pertama