human
Quelle est la signification de 1/1/1753 dans SQL Server
gpt
La décision d'utiliser le 1er janvier 1753 (```1753-01-01```) comme valeur minimale de date pour un datetime dans SQL Server remonte à ses origines Sybase.
La signification de la date elle-même peut cependant être attribuée à cet homme.

Philip Stanhope, 4e comte de Chesterfield. Qui a dirigé l'adoption de l'Acte du calendrier (nouveau style) de 1750 par le Parlement britannique. Cela a légiféré pour l'adoption du calendrier grégorien pour la Grande-Bretagne et ses colonies de l'époque.

Il y avait quelques jours manquants (lien vers l'archive Internet) dans le calendrier britannique en 1752 lorsque l'ajustement a finalement été effectué à partir du calendrier julien. Du 3 septembre 1752 au 13 septembre 1752, ils ont été perdus.
Kalen Delaney a expliqué ce choix de la manière suivante :

> Donc, avec 12 jours perdus, comment pouvez-vous calculer des dates ? Par exemple, comment pouvez-vous calculer le nombre de jours entre le 12 octobre 1492 et le 4 juillet 1776 ? Incluez-vous ces 12 jours manquants ? Pour éviter d'avoir à résoudre ce problème, les développeurs originaux de Sybase SQL Server ont décidé de ne pas autoriser les dates antérieures à 1753. Vous pouvez stocker des dates antérieures en utilisant des champs de caractères, mais vous ne pouvez pas utiliser de fonctions datetime avec les dates antérieures que vous stockez dans des champs de caractères.

Le choix de 1753 semble cependant quelque peu anglocentrique, car de nombreux pays catholiques d'Europe utilisaient déjà le calendrier depuis 170 ans avant la mise en œuvre britannique (initialement retardée en raison de l'opposition de l'Église). À l'inverse, de nombreux pays n'ont pas réformé leur calendrier avant beaucoup plus tard, en 1918 en Russie. En effet, la révolution d'octobre 1917 a commencé le 7 novembre selon le calendrier grégorien.
À la fois ```datetime``` et le nouveau type de données ```datetime2``` mentionné dans la réponse de Joe ne tentent pas de tenir compte de ces différences locales et utilisent simplement le calendrier grégorien.
Ainsi, avec la plus grande plage de ```datetime2```
```SELECT CONVERT(VARCHAR, DATEADD(DAY,-5,CAST('1752-09-13' AS DATETIME2)),100)
```
Renvoie
```Sep  8 1752 12:00AM
```
Un dernier point concernant le type de données ```datetime2``` est qu'il utilise le calendrier grégorien proleptique projeté en arrière bien avant qu'il ne soit réellement inventé, il est donc d'une utilité limitée pour traiter les dates historiques.
Cela contraste avec d'autres implémentations logicielles telles que la classe Gregorian Calendar de Java, qui utilise par défaut le calendrier julien pour les dates jusqu'au 4 octobre 1582, puis passe au 15 octobre 1582 dans le nouveau calendrier grégorien. Il gère correctement le modèle julien des années bissextiles avant cette date et le modèle grégorien après cette date. La date de transition peut être modifiée par l'appelant en appelant ```setGregorianChange()```.
Un article assez divertissant discutant de quelques particularités supplémentaires liées à l'adoption du calendrier peut être trouvé ici.