Problèmes de conversion avec VARCHAR à DATETIME

J'ai des exemples de données comme ceci:

SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 3), 120); 

quand j'exécute cela, je reçois une erreur comme ceci:

Msg 241, niveau 16, état 1, ligne 1
La conversion a échoué lors de la conversion de la date et / ou de l'heure de la string de caractères.

Alors j'ai supprimé les 2 premiers caractères de l'année 1997

 SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/97', 3), 120); 

Et il a donné Result Set comme ceci:

 Date 1997-10-11 

Il a donc été converti du format JJ / MM / AA en AAAA-MM-JJ

Bien mais pourquoi il a pris 1997 si je vais donner 17 il donnera comme 2017. Si je donne 37 il donnera 2037 et si je donne 67 et il donne 1967.

Et enfin comment peut JJ / MM / AAAA au format AAAA-MM-JJ

Vous devez utiliser 103 lorsque vous spécifiez une année à quatre numbers:

 SELECT CONVERT(DATE, '11/10/1997', 103) -- 1997-10-11 (DATE) 

Si vous souhaitez convertir la date en string, convertissez-la à nouveau:

 SELECT CONVERT(VARCHAR(10), CONVERT(DATE, '11/10/1997', 103), 120) -- 1997-10-11 (VARCHAR) 

La list complète des styles est disponible ici .

Au lieu de 3, vous pouvez calquer 103. Donc: SELECT CONVERT(CHAR(19), CONVERT(DATE, '11/10/1997', 103), 120); reviendra 1997-10-11

Pouvez-vous essayer cela?

 declare @datechar as char(19) ='11/10/1997' select FORMAT(convert(date,@datechar,103),'yyyy-MM-dd')