DATETIME2
a une plage de dates de "0001 / 01 / 01" à "9999 / 12 / 31" tandis que le type DATETIME
ne prend en charge que les années 1753-9999.
De plus, si nécessaire, DATETIME2
peut être plus précis en termes de temps; DATETIME
est limité à 3 1/3 millisecondes, tandis que DATETIME2
peut être précis jusqu'à 100ns.
Les deux types sont mappés à System.DateTime
en .NET - pas de différence de ce côté-là.
Si vous avez le choix, je recommanderais d'utiliser DATETIME2
autant que possible. Je ne vois aucun avantage à utiliser DATETIME
(à part pour la compatibilité ascendante) - vous aurez moins de problèmes (avec des dates hors de portée et des tracas comme ça).
De plus : si vous avez seulement besoin de la date (sans heure), utilisez DATE
- c'est aussi bien que DATETIME2
et vous permet d'économiser de l'espace, aussi! :-) Il en va de même pour l'heure seulement - utilisez TIME
. C'est à cela que servent ces types!