Question

Je suis en train d'interroger une table qui a un varchar (100) de la colonne "valeur". Cette colonne peut contenir quoi que ce soit d'une lettre, un chiffre ou, dans ce cas, une date.

La date sera toujours saisie dans le tableau comme «aaaa-mm-jj. Cependant, quand je lance la requête suivante:

select * from myTable
where VALUE =  '2009-12-11' (Date, Format 'yyyy-mm-dd')  

Je reçois l'erreur suivante:

Invalid date supplied for myTable.VALUE.

Exemple de la table de valeurs: (1, '122') (2, 'rouge') (3, '11/12/2009')

Toutes les idées sur ce qui pourrait être la cause?

Merci!

Était-ce utile?

La solution

si le type de données est déclarée comme varchar, il devrait simplement le traiter comme une chaîne. essayez de ne pas spécifier quoi que ce soit sur le format de date, comme

select * from myTable
where VALUE =  '2009-12-11'

Autres conseils

Si vous exécutez une requête expliquer sur la, vous pouvez voir que sa valeur coulée à ce jour avant de comparer contre votre valeur fournie. Si vous avez une autre colonne qui enregistre avec précision le type de ce qui est en valeur, vous pouvez l'ajouter à la clause where et vous ne recevrez plus l'erreur (voir ci-dessous). Sinon, passez à la recommandation de Beth.

select * from myTable
where VALUE =  '2009-12-11' (Date, Format 'yyyy-mm-dd')
and VALUE_TYPE = 'DATE';

Teradata calcul de date interne est (year - 1900) * 10000 + (month * 100) + day.

Donc, si la date est 02/11/2009 (2e Novembre 2010) puis

=(2009-1900) * 10000 + (11 * 100) + 2
=109 * 10000 + 1100 + 2
=1090000 + 1100 + 2    
=1090000
    1100
       2
----------
 1091102
----------

2 novembre 2009 est stocké dans Teradata comme 1091102. Vous pouvez l'extraire au format requis par coulée (comme u ont en varchar). Espérons que cela aide.

Est-il possible que VALUE est un mot réservé dans Teradata? Si oui, vous devez mettre cela entre guillemets:

select * 
from myTable
where "VALUE" = '2009-12-11'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top