web-dev-qa-db-fra.com

Conversion de varchar en date dans SQL Server

Cela semble une solution facile, mais je n'arrive pas à comprendre pourquoi cela ne fonctionne pas pour moi. J'ai une colonne qui a des données comme ceci:

DateField
----------
12/16/2016
11/06/2016

Tout ce que je veux faire est de convertir varchar en une colonne date, mais j'obtiens cette erreur:

La conversion a échoué lors de la conversion de la date et/ou de l'heure d'une chaîne de caractères.

Voici ma requête simple:

select convert (date, DateField) as convertedField 
from myTable
3
moe

Rien de mal avec les deux exemples que vous avez donnés. Certaines dates incorrectes dans votre table ne peuvent pas être converties en date.

Utilisez la fonction TRY_CONVERT pour les mauvaises dates, elle retournera NULL

select TRY_Convert(date,DateField)
From myTable

Vous devez toujours stocker les dates dans le type de données DATE/DATETIME

Si vous voulez voir les enregistrements qui ne peuvent pas être convertis en date, alors 

select DateField
From myTable
Where TRY_Convert(date,DateField) IS NULL
10
Pரதீப்

Si vous travaillez avec un format de date spécifique tel que mm/dd/yyyy Vous pouvez le spécifier dans la fonction Convert() comme suit

CONVERT(DATETIME,DATAFIELD,101)

Si cela ne fonctionne toujours pas, utilisez TRY_CONVERT() pour connaître les lignes générant cette exception:

SELECT * 
FROM TBL 
WHERE TRY_CONVERT(DATETIME, DATAFIELD, 101) IS NULL

Cela retournera les lignes qui ne peuvent pas être converties

TRY_CONVERT() retournera NULL si la conversion a échoué

En savoir plus sur les formats DateTime ici: SQL Server CONVERT () Tutoriel de fonction

Lire Article TRDN_CONVERT MSDN

3
Hadi

Vous devez spécifier le format de date et heure lors du formatage. La date dans votre tableau est actuellement au format U.S, vous devez donc passer le troisième argument 101 dans votre fonction convert.

SELECT CONVERT(date,[DateField],101) FROM myTable;

Travailler Fiddle ici http://rextester.com/NYKR49788

Plus d'informations sur le style date/heure ici: https://msdn.Microsoft.com/en-us/library/ms187928.aspx

0
Aatish Sai