SQL Server ne stocke pas de DateTime
dans n'importe quel format de chaîne - il est stocké sous la forme d'une valeur numérique de 8 octets.
Les différents paramètres (langue, format de date) n'influencent que la façon dont le DateTime
vous est montré dans SQL Server Management Studio - ou comment il est analysé lorsque vous essayez de convertir une chaîne en un DateTime
.
De nombreux formats sont pris en charge par SQL Server - consultez la MSDN Books Online on CAST et CONVERTIR . La plupart de ces formats sont dépendants sur quels paramètres vous avez - par conséquent, ces paramètres peuvent fonctionner parfois - et parfois non.
La façon de résoudre ce problème est d'utiliser le format de date ISO-8601 qui est pris en charge par SQL Server - ce format fonctionne toujours - quels que soient vos paramètres de langue et de format de date SQL Server.
Le format ISO-8601 est pris en charge par SQL Server et se décline en deux versions :
YYYYMMDD
pour les dates uniquement (pas d'heure) - notez ici :pas de tirets ! , c'est très important !YYYY-MM-DD
n'est PAS indépendant des paramètres de format de date de votre serveur SQL et ne sera PAS fonctionne dans toutes les situations !
ou :
YYYY-MM-DDTHH:MM:SS
pour les dates et les heures - notez ici :ce format a tirets.
Ceci est valable pour SQL Server 2000 et plus récent.
Si vous utilisez SQL Server 2008 et la DATE
type de données (uniquement DATE
- pas DATETIME
!), alors vous pouvez en effet aussi utiliser le YYYY-MM-DD
format et cela fonctionnera également avec tous les paramètres de votre serveur SQL.
Ne me demandez pas pourquoi tout ce sujet est si délicat et quelque peu déroutant - c'est comme ça. Mais avec le YYYYMMDD
format, vous devriez être bien pour n'importe quelle version de SQL Server et pour n'importe quel paramètre de langue et de format de date dans votre SQL Server.