Lorsque j'exécute l'instruction suivante:
SELECT CAST ('12/08/1988' AS DATE) AS BIRTHDAY
J'obtiens le 1988-12-08, pas le 1988-08-12 au format ISO 8601. Comment SQL Server décide-t-il du format à appliquer pour l'analyse? Je connais les meilleures pratiques, je suis simplement intéressé par où cela mène-t-il et comment cela peut-il être changé?
2 réponses
SQL Server n'a pas de "culture", il analysera toujours une valeur dans ce format comme mm/dd/yyyy
(c'est-à-dire au format américain). vous pouvez le contrôler dans une certaine mesure en utilisant DATEFORMAT
, par exemple:
SET DATEFORMAT mdy
Cependant, ce sont des formats assez basiques et vous devriez vraiment éviter de vous y fier.
Si vous souhaitez le modifier, vous devez utiliser la fonction CONVERT
ou la plus récente PARSE
. Par exemple, pour spécifier le format britannique:
SELECT CONVERT(DATE, '12/08/1988', 103)
Ou:
SELECT PARSE('12/08/1988' AS DATETIME USING 'en-GB')
Cela sera toujours plus fiable, quels que soient les formats de date:
SELECT CAST ('1988-08-12' AS DATE) AS BIRTHDAY
Comme vous ne spécifiez pas le format, il utilisera le format de date par défaut sur votre instance SQL, qui ressemble à l'anglais américain.
De nouvelles questions
sql
Le langage de requête structuré (SQL) est un langage permettant d'interroger des bases de données. Les questions doivent inclure des exemples de code, une structure de table, des exemples de données et une balise pour l'implémentation du SGBD (par exemple MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) utilisés. Si votre question concerne uniquement un SGBD spécifique (utilise des extensions / fonctionnalités spécifiques), utilisez plutôt la balise de ce SGBD. Les réponses aux questions marquées avec SQL doivent utiliser le standard SQL ISO / IEC.