J'ai une table avec 5 millions d'enregistrements de dates stockés en tant que char (10) avec le format aaaa/mm/jj. Je dois convertir en datetime, donc je l'utilise:SQL Update varchar à date erreur
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 à un type de données datetime donné une valeur hors de portée valeur." Maintenant, j'ai essayé de corriger les données pour que cela ne se produise pas - pas "yyyy" en dessous de 1900 ou plus de 2000, pas de "dd" au dessus de 30 (28 pour février), pas de "mm" au dessus de 12 ou ci-dessous 0. Aucune valeur NULL.
La conversion échoue toujours.
Y a-t-il un moyen de permettre à SQL d'ignorer la conversion en cas d'erreur et de continuer?
E.g. quelque chose comme:
SET [DoB]= try to do [DoB]=convert(datetime,[DoBText],103) if fails SET [DoB] = NULL
Merci Karl
Certains mois ont 31 jours dans - J'espère que vous n'avez pas brisé vos données: S –
Aussi, il n'y a pas de mois zéro - mois devrait être 1-12 inclusivement. –