2017-05-03 2 views
2

Je suis en train d'essayer de convertir une colonne de type chaîne en date.Convertir jj/mm/aaaa à ce jour dans SQL Server

Le nom de la colonne est StartDate, qui contient un format de date de chaîne dd/mm/yyyy. Le type de champ est varchar(3000).

J'ai essayé les suivantes:

CONVERT(datetime, StartDate, 103) 

CAST(CONVERT(VARCHAR(10), StartDate, 110) AS DATE) 

CONVERT(DATE, RIGHT(StartDate, 4) + '-' + SUBSTRING(StartDate, 4, 2) + '-' + LEFT(StartDate, 2), 126) 

et d'autres combinaisons similaires.

Je reçois toujours des messages d'erreur "hors gamme" et "conversion échouée".

Est-ce que quelqu'un a une solution créative?

+0

alors vous avez de mauvaises données (quelque chose comme '30/02/2015' ou' 12/13/2017', etc) – Lamak

+0

La première et la troisième variante devraient fonctionner très bien. Le second (avec le style 110) est pour un autre format: mm-jj-aaaa. –

+0

Copie possible de [Sql Server chaîne à la conversion de date] (http://stackoverflow.com/questions/207190/sql-server-string-to-date-conversion) –

Répondre

2

Je suppose que vous avez des données fausses. Par exemple

Select try_convert(date, '15/07/2014', 103) 

Retours

2014-07-15 

Si 2012+, je suggère que vous

Select * 
From YourTable 
Where try_convert(date, StartDate, 103) is null 

Cela permettra d'identifier vos zones à problèmes