2017-09-19 1 views
0

J'exécute un travail ETL qui échoue en raison de problèmes de qualité des données. Dans ma source, ma colonne de date est au format String et je la convertis en TIMESTAMP en utilisant la méthode to_timestamp() en la stockant dans la cible.SQL: Vérification du format de colonne dont la valeur est 'Date' mais le type est 'Chaîne'

Ce travail échoue lorsqu'une valeur de date (au format String) est égale à 2016-06- au lieu de 2016-11-10 06:07:48.633. En raison de la valeur incorrecte, je ne peux pas le convertir en horodatage et tout mon travail échoue. Comment puis-je appliquer une vérification de format de manière générique pour vérifier que la date (dans le type de données String) est au format correct avant de la convertir en horodatage?

+0

Copie possible de https://stackoverflow.com/q/44018443/1509264 ou de https://stackoverflow.com/q/37659643/1509264 – MT0

+0

La vraie question: pourquoi stockez-vous des horodatages dans une colonne 'VARCHAR'? –

+0

Je suis complètement d'accord mais ce n'est pas sous mon contrôle et je ne peux pas le changer –

Répondre

1

Vous pouvez utiliser la fonction Isdate() pour vérifier si une chaîne est datée ou non.

Utilisez cette fonction au niveau du filtre et filtrez les dates non valides et chargez le reste.