De nombreux formats sont pris en charge par SQL Server - consultez la MSDN Books Online sur CAST
et CONVERT
. 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 (légèrement adapté) 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 de partie horaire) ; 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 (mais ils peuvent être omis), et unT
fixe comme délimiteur entre la partie date et heure de votreDATETIME
.
Ceci est valable pour SQL Server 2000 et plus récent.
Si vous utilisez SQL Server 2008 ou une version plus récente 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.
La recommandation pour SQL Server 2008 et plus récent est d'utiliser DATE
si vous n'avez besoin que de la partie date, et DATETIME2(n)
lorsque vous avez besoin à la fois de la date et de l'heure. Vous devriez essayer de commencer à supprimer progressivement le DATETIME
type de données si possible