web-dev-qa-db-fra.com

Comment convertir une chaîne "jj/mm/aaaa" en date/heure dans SQL Server?

J'ai essayé ça

SELECT convert(datetime, '23/07/2009', 111)

mais j'ai eu cette erreur

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

Toutefois

SELECT convert(datetime, '07/23/2009', 111)

est bien si

Comment réparer le 1er?

38
Sim

Le dernier argument de CONVERT semble déterminer le format utilisé pour l'analyse. Consultez Documents MSDN pour CONVERT .

111 - celui que vous utilisez est le Japon yy/mm/dd.

Je suppose que celui que vous recherchez est 103, c'est-à-dire dd/mm/yyyy.

Donc, vous devriez essayer:

 SELECT convert(datetime, '23/07/2009', 103)
77

Essayer:

SELECT convert(datetime, '23/07/2009', 103)

c'est la norme britannique/française.

9
Alex
SELECT convert(datetime, '23/07/2009', 103)
0
user6434845
SELECT convert(varchar(10), '23/07/2009', 111)
0
RNT665

SQL Server utilise par défaut le format de date mdy et le fonctionnement ci-dessous fonctionne donc:

SELECT convert(datetime, '07/23/2009', 111)

et cela ne marche pas:

SELECT convert(datetime, '23/07/2009', 111)

J'ai moi-même eu du mal à trouver une seule requête capable de gérer les deux formats de date: mdy et dmy.

Cependant, vous devriez être d'accord avec le troisième format de date - ymd.

0
Qwerty-uiop