Warum 1753? Was haben sie gegen 1752? Mein Ur-Ur-Ur-Ur-Ur-Ur-Großvater wäre sehr beleidigt.
Warum 1753? Was haben sie gegen 1752? Mein Ur-Ur-Ur-Ur-Ur-Ur-Großvater wäre sehr beleidigt.
Die Entscheidung, den 1. Januar 1753 ( 1753-01-01
) als Mindestdatum für eine Datums- / Uhrzeitangabe in SQL Server zu verwenden, geht auf die Sybase-Ursprünge zurück .
Die Bedeutung des Datums selbst kann diesem Mann jedoch zugeschrieben werden.
Philip Stanhope, 4. Earl of Chesterfield. Wer steuerte den Calendar (New Style) Act 1750 durch das britische Parlament. Dies sah die Verabschiedung des Gregorianischen Kalenders für Großbritannien und seine damaligen Kolonien vor.
Es gab einige fehlende Tage (Link zum Internetarchiv) im britischen Kalender im Jahr 1752, als die Anpassung schließlich aus dem julianischen Kalender vorgenommen wurde. 3. September 1752 bis 13. September 1752 gingen verloren.
Kalen Delaney erklärte die Wahl auf diese Weise
Wie können Sie nach 12 verlorenen Tagen Daten berechnen? Wie können Sie beispielsweise die Anzahl der Tage zwischen dem 12. Oktober 1492 und dem 4. Juli 1776 berechnen? Schließen Sie die fehlenden 12 Tage ein? Um dieses Problem nicht lösen zu müssen, haben die ursprünglichen Sybase SQL Server-Entwickler beschlossen, keine Daten vor 1753 zuzulassen. Sie können frühere Daten mithilfe von Zeichenfeldern speichern, jedoch keine Datums- / Uhrzeitfunktionen mit den früheren Daten, die Sie in Zeichen speichern Felder.
Die Wahl von 1753 scheint jedoch etwas anglozentrisch zu sein, da viele katholische Länder in Europa den Kalender vor der britischen Umsetzung 170 Jahre lang verwendet hatten (ursprünglich aufgrund des Widerstandes der Kirche verzögert ). Umgekehrt haben viele Länder ihre Kalender erst viel später, 1918 in Russland, reformiert. Tatsächlich begann die Oktoberrevolution von 1917 am 7. November nach dem Gregorianischen Kalender.
Beide datetime
und der datetime2
in Joes Antwort erwähnte neue Datentyp versuchen nicht, diese lokalen Unterschiede zu berücksichtigen, und verwenden einfach den Gregorianischen Kalender.
Also mit der größeren Reichweite von datetime2
SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)
Kehrt zurück
Sep 8 1752 12:00AM
Ein letzter Punkt beim datetime2
Datentyp ist, dass er den proleptischen Gregorianischen Kalender verwendet, der weit vor seiner Erfindung rückwärts projiziert wurde, sodass er im Umgang mit historischen Daten nur begrenzt von Nutzen ist.
Dies steht im Gegensatz zu anderen Software-Implementierungen wie der Java- Gregorianischen Kalenderklasse , die standardmäßig dem Julianischen Kalender für Daten bis zum 4. Oktober 1582 folgt und dann im neuen Gregorianischen Kalender zum 15. Oktober 1582 springt. Es behandelt das julianische Modell des Schaltjahres vor diesem Datum und das gregorianische Modell nach diesem Datum korrekt. Das Stichtag kann vom Anrufer telefonisch geändert werden setGregorianChange()
.
Einen ziemlich unterhaltsamen Artikel über einige weitere Besonderheiten bei der Annahme des Kalenders finden Sie hier .
Ihr Ur-Ur-Ur-Ur-Ur-Ur-Großvater sollte ein Upgrade auf SQL Server 2008 durchführen und den Datentyp DateTime2 verwenden, der Daten im Bereich von 0001-01-01 bis 9999-12-31 unterstützt.
quelle
1752 wechselte Großbritannien vom julianischen zum gregorianischen Kalender. Ich glaube, zwei Wochen im September 1752 sind nie passiert, was Auswirkungen auf die Daten in diesem allgemeinen Bereich hat.
Eine Erklärung: http://uneasysilence.com/archive/2007/08/12008/ ( Internet Archive Version )
quelle
Dies ist die ganze Geschichte, wie das Datumsproblem war und wie große DBMS mit diesen Problemen umgingen.
Quelle 1 und 2
quelle
Übrigens weiß Windows nicht mehr, wie UTC für bestimmte Daten im März / April oder Oktober / November der vergangenen Jahre korrekt in US-Ortszeit konvertiert werden kann. UTC-basierte Zeitstempel von diesen Daten sind jetzt etwas unsinnig. Es wäre sehr schwierig für das Betriebssystem, sich einfach zu weigern, Zeitstempel vor den neuesten Sommerzeitregeln der US-Regierung zu verarbeiten, sodass einige davon einfach falsch behandelt werden. SQL Server weigert sich, Daten vor 1753 zu verarbeiten, da viele spezielle Logik erforderlich wäre, um sie korrekt zu behandeln, und sie nicht falsch behandeln möchte.
quelle