Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi le 30/12/1899 est-il la date zéro dans Access/SQL Server au lieu du 31/12 ?

Maintenir la compatibilité avec Lotus 1-2-3 à l'époque, qui avait un bogue en ce sens qu'il pensait que l'année 1900 était une année bissextile (ou prétendait ?).

L'explication est trop longue pour être citée, mais par souci de curiosité, voici quelques extraits.

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

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

1900 n'était pas une année bissextile.

"C'est un bogue dans Excel !" m'écriai-je.

"Eh bien, pas vraiment," dit Ed. "Nous avons dû procéder ainsi car nous devons pouvoir importer des feuilles de calcul Lotus 123."

"Alors, c'est un bogue dans Lotus 123 ?"

"Ouais, mais probablement intentionnel. Lotus devait tenir dans 640K. Ce n'est pas beaucoup de mémoire. Si vous ignorez 1900, vous pouvez déterminer si une année donnée est une année bissextile simplement en regardant pour voir si les deux bits les plus à droite sont zéro. C'est vraiment rapide et facile. Les gars de Lotus ont probablement pensé que cela n'avait pas d'importance de se tromper pendant ces deux mois dans le passé. Il semble que les gars de Basic voulaient être anaux à propos de ces deux mois, alors ils ont déplacé le époque un jour en arrière."

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

En fait, ce nombre est supérieur d'une unité au nombre réel de jours. En effet, Excel se comporte comme si la date 1900-Feb-29 existait. Il n'a pas. L'année 1900 n'était pas une année bissextile (l'année 2000 est une année bissextile). Dans Excel, le jour après 1900-Feb-28 est 1900-Feb-29. En réalité, le lendemain de 1900-Feb-28 était 1900-Mar-1 . Ce n'est pas un bug". En effet, c'est par conception. Excel fonctionne de cette façon car il s'agissait véritablement d'un bogue dans Lotus 123. Lors de l'introduction d'Excel, 123 possédait presque tout le marché des tableurs. Microsoft a décidé de continuer le bogue de Lotus, afin d'être entièrement compatible. Les utilisateurs qui passeraient de 123 à Excel n'auraient pas à modifier leurs données. Tant que toutes vos dates sont postérieures au 1er mars 1900, cela ne devrait pas vous inquiéter.