Je suis confronté à une situation étrange, lorsque Oracle ne me permet pas de sélectionner des lignes par la valeur de la date, qui a dans dB.
Il y a une table avec J'essaie d'importer des données à partir de cet oracle sur MS SQL Server et l'importation échoue avec "mauvaise valeur pour la colonne de date". P> Après une enquête que j'ai trouvée, qu'il y a étrange valeur OK, j'ai essayé de sélectionner des rangées d'Oracle par cette valeur, mais je suis Obtenir une erreur: P> trans_date code> Colonne (type de données de date) . p> '0002-11-30' code> dans la table source. p> SQL Error [1843] [22008]: ORA-01843: not a valid month
4 Réponses :
SELECT * FROM OWS.DOC WHERE TRANS_DATE=date'0002-11-30'
Le "lun" de "Yyyy-Mon-DD" est pour la balance des personnages du mois, essayez quelque chose comme ça p>
Sélectionnez TO_DATE ('0002-NOV-30', 'AAAAY-MON-DD') de Dual CODE> P>
Vous avez dit:
to_date('0002-11-30', 'yyyy-mm-dd')
Basé sur vos requêtes, je suppose que la colonne trans_date est de DataType Date. Par conséquent, vos requêtes sont incorrectes.
SELECT * de OWS.DOC où trans_date = '0002-11-30 00:00:00'; CODE> P> blockQuote>Dans ce sélection, vous comparez DataType de chaîne contre la date DataType. P>
SELECT * à partir d'OWS.DOC où trans_date = to_date ('0002-11-30', 'AAAYY-MON-DD'); CODE> P> blockQuote>Dans ce cas, vous utilisez "MM" au lieu de "MM" où "Lun" est une représentation textuelle de 3 lettres du mois inscrit numérique comme prévu. Mais la fixation de cela n'entraînerait probablement aucune donnée figurant comme dans la première requête que vous tronquez des dates tronquantes, vous devez donc faire la même chose. P>
Ceci devrait le faire: P>
SELECT * FROM OWS.DOC WHERE trunc(TRANS_DATE) = to_date('0002-11-30', 'yyyy-mm-dd');