Dlaczego 1753? Co mają przeciwko 1752? Mój pra pra pra pra pra pra pradziadek byłby bardzo urażony.
Dlaczego 1753? Co mają przeciwko 1752? Mój pra pra pra pra pra pra pradziadek byłby bardzo urażony.
Decyzja o użyciu 1 stycznia 1753 r. ( 1753-01-01
) Jako minimalnej wartości daty dla daty i godziny w SQL Server powraca do początków Sybase .
Znaczenie samej daty można jednak przypisać temu człowiekowi.
Philip Stanhope, 4. hrabia Chesterfield. Kto kierował ustawą o kalendarzu (nowy styl) 1750 za pośrednictwem parlamentu brytyjskiego. Stanowiło to prawo do przyjęcia kalendarza gregoriańskiego dla Wielkiej Brytanii i jej ówczesnych kolonii.
Było kilka brakujących dni (internet Link archiwum) w brytyjskim kalendarzu w 1752 roku, gdy regulacja została ostatecznie wykonana z kalendarza juliańskiego. 3 września 1752 r. Do 13 września 1752 r. Zaginęły.
Kalen Delaney wyjaśnił w ten sposób wybór
Więc, po 12 dniach straconych, jak możesz obliczyć daty? Jak na przykład obliczyć liczbę dni między 12 października 1492 r. A 4 lipca 1776 r.? Czy uwzględnisz te brakujące 12 dni? Aby uniknąć konieczności rozwiązania tego problemu, pierwotni programiści Sybase SQL Server postanowili nie zezwalać na daty przed 1753 r. Możesz przechowywać wcześniejsze daty za pomocą pól znaków, ale nie możesz używać żadnych funkcji datetime z wcześniejszymi datami, które przechowujesz w charakterze pola.
Wybór z 1753 roku wydaje się nieco anglocentryczny, jednak wiele krajów katolickich w Europie używało kalendarza przez 170 lat przed brytyjską implementacją (początkowo opóźnione z powodu sprzeciwu Kościoła ). I odwrotnie, wiele krajów zreformowało swoje kalendarze dopiero znacznie później, w 1918 r. W Rosji. Rzeczywiście rewolucja październikowa w 1917 r. Rozpoczęła się 7 listopada zgodnie z kalendarzem gregoriańskim.
Zarówno datetime
nowy datetime2
typ danych wymieniony w odpowiedzi Joe nie próbują uwzględniać tych lokalnych różnic i po prostu używają kalendarza gregoriańskiego.
Więc z większym zakresem datetime2
SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)
Zwroty
Sep 8 1752 12:00AM
Ostatni punkt dotyczący tego datetime2
typu danych polega na tym, że korzysta z proleptycznego kalendarza gregoriańskiego rzutowanego wstecz na długo przed jego faktycznym wynalezieniem, więc ma on ograniczone zastosowanie w przypadku dat historycznych.
Kontrastuje to z innymi implementacjami oprogramowania, takimi jak klasa kalendarza gregoriańskiego Java, która domyślnie śledzi kalendarz juliański dla dat do 4 października 1582 r., A następnie przeskakuje do 15 października 1582 r. W nowym kalendarzu gregoriańskim. Prawidłowo obsługuje Juliański model roku przestępnego przed tą datą i model gregoriański po tej dacie. Data przełączenia może zostać zmieniona przez dzwoniącego setGregorianChange()
.
Dość zabawny artykuł omawiający pewne osobliwości związane z przyjęciem kalendarza można znaleźć tutaj .
Twój pra-pra-pra-pra-pra-pra-pra-pra-pra-dziadek powinien dokonać aktualizacji do SQL Server 2008 i użyć typu danych DateTime2 , który obsługuje daty z zakresu: 0001-01-01 do 9999-12-31.
źródło
1752 był rokiem przejścia Wielkiej Brytanii z kalendarza juliańskiego na kalendarz gregoriański. Uważam, że dwa tygodnie we wrześniu 1752 r. Nigdy się nie wydarzyły, co ma wpływ na daty w tej ogólnej dziedzinie.
Wyjaśnienie: http://uneasysilence.com/archive/2007/08/12008/ ( wersja archiwum internetowego )
źródło
To cała historia, jak problem z datą i jak duże DBMS poradziły sobie z tymi problemami.
Źródło 1 i 2
źródło
Nawiasem mówiąc, system Windows nie wie już, jak poprawnie konwertować UTC na czas lokalny w USA dla niektórych dat w marcu / kwietniu lub październiku / listopadzie poprzednich lat. Sygnatury czasowe oparte na UTC z tych dat są teraz nieco nonsensowne. Byłoby bardzo niegrzeczne, gdyby system operacyjny po prostu odmawiał obsługi znaczników czasu przed najnowszym zestawem reguł DST rządu USA, więc po prostu obsługuje niektóre z nich źle. Program SQL Server odmawia przetwarzania dat sprzed 1753 r., Ponieważ do ich poprawnej obsługi potrzebna będzie dodatkowa logika i nie chce się z nimi źle obchodzić.
źródło