Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum ist 1899-12-30 das Nulldatum in Access / SQL Server anstelle von 12/31?

Aufrechterhaltung der Kompatibilität mit Lotus 1-2-3 damals, das einen Fehler hatte, indem es dachte, das Jahr 1900 sei ein Schaltjahr (oder tat es so?).

Die Erklärung ist zu lang, um sie zu zitieren, aber aus Neugierde sind hier einige Ausschnitte.

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

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

1900 war kein Schaltjahr.

"Es ist ein Fehler in Excel!" rief ich aus.

"Nun, nicht wirklich", sagte Ed. "Wir mussten es so machen, weil wir in der Lage sein müssen, Lotus 123-Arbeitsblätter zu importieren."

"Also ist es ein Bug in Lotus 123?"

„Ja, aber wahrscheinlich ein absichtliches. Lotus musste 640.000 unterbringen. Das ist nicht viel Speicher. Wenn Sie 1900 ignorieren, können Sie herausfinden, ob ein bestimmtes Jahr ein Schaltjahr ist, indem Sie einfach nachsehen, ob die zwei Bits ganz rechts sind sind null. Das ist wirklich schnell und einfach. Die Lotus-Jungs dachten wahrscheinlich, dass es in diesen zwei Monaten in der Vergangenheit keine Rolle spielte, falsch zu liegen. Es sieht so aus, als wollten die Basic-Jungs über diese zwei Monate anal sein, also sind sie umgezogen Epoche einen Tag zurück."

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

Tatsächlich ist diese Zahl um eins größer als die tatsächliche Anzahl von Tagen. Dies liegt daran, dass sich Excel so verhält, als ob das Datum 1900-Feb-29 existierte. Es hat nicht. Das Jahr 1900 war kein Schaltjahr (das Jahr 2000 ist ein Schaltjahr). In Excel ist der Tag nach dem 28. Februar 1900 der 29. Februar 1900. In Wirklichkeit war der Tag nach dem 28. Februar 1900 der 1. März 1900. Das ist kein "Fehler". In der Tat ist es beabsichtigt. Excel funktioniert so, weil es wirklich ein Fehler in Lotus 123 war. Als Excel eingeführt wurde, hatte 123 fast den gesamten Markt für Tabellenkalkulationssoftware. Microsoft hat beschlossen, den Fehler von Lotus fortzusetzen, um vollständig kompatibel zu sein. Nutzer, die von 123 auf Excel umgestiegen sind, müssten keine Änderungen an ihren Daten vornehmen. Solange alle Ihre Daten nach dem 1. März 1900 liegen, sollte dies keine Rolle spielen.