J'ai une table avec 5 millions d'enregistrements de dates stockées sous forme de char(10) avec le format yyyy/mm/dd. J'ai besoin de les convertir en datetime, donc j'utilise :
UPDATE [Database].[dbo].[Table]
SET [DoB]=convert(datetime,[DoBText],103)
GO
Mais je reçois l'erreur :
"La conversion d'un type de données varchar en un type de données datetime a donné lieu à une valeur hors plage."
J'ai essayé de corriger les données pour que cela ne se produise pas - c'est-à-dire pas de "yyyy" inférieur à 1900 ou supérieur à 2000, pas de "dd" supérieur à 30 (28 pour février), pas de "mm" supérieur à 12 ou inférieur à 0. Pas de NULLs.
La conversion échoue toujours.
Y a-t-il un moyen de permettre à SQL d'ignorer la conversion en cas d'erreur et de continuer ?
Par exemple, quelque chose comme :
SET [DoB]= try to do [DoB]=convert(datetime,[DoBText],103) if fails SET [DoB] = NULL
Merci Karl