0
votes

Oracle - Valeur de la carte de la mauvaise date dans la colonne de date

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 trans_date code> Colonne (type de données de date) . p>

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 '0002-11-30' code> dans la table source. p> xxx pré>

OK, j'ai essayé de sélectionner des rangées d'Oracle par cette valeur, mais je suis Obtenir une erreur: P>

SQL Error [1843] [22008]: ORA-01843: not a valid month


0 commentaires

4 Réponses :


0
votes
SELECT *
FROM OWS.DOC
WHERE TRANS_DATE=date'0002-11-30'

0 commentaires

0
votes

Le "lun" de "Yyyy-Mon-DD" est pour la balance des personnages du mois, essayez quelque chose comme ça

Sélectionnez TO_DATE ('0002-NOV-30', 'AAAAY-MON-DD') de Dual


0 commentaires

0
votes

Vous avez dit:

to_date('0002-11-30', 'yyyy-mm-dd')


0 commentaires

0
votes

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');


0 commentaires