s'il vous plaît laissez-moi savoir la question suivante avec requête SQL
Question
SELECT pd_end_dt,nrx_cnt
FROM wkly_lnd.lnd_wkly_plan_rx_summary
WHERE pd_end_dt >TO_DATE('01/01/2009')
Il donne erreur ORA-01843: pas un mois valide
J'ai couru le suivant, il a fait bien
SELECT pd_end_dt, nrx_cnt DE wkly_lnd.lnd_wkly_plan_rx_summary OÙ pd_end_dt> '01 -Jan-09
mais si je veux avoir des données de semaine sage comment faire dat
Pas de solution correcte
Autres conseils
Vous ne donnez pas une chaîne de format TO_DATE . Cela pourrait provoquer Oracle pour gérer votre mauvaise date. Essayez
to_date('01/01/2009', 'DD/MM/YYYY')
au lieu (selon l'endroit où vous êtes, vous pouvez modifier l'ordre de DD et MM). Voir cette description de l'argument chaîne format TO_DATE pour plus de détails.
essayer
TO_DATE('01/01/2009', 'dd/mm/yyyy')
Ok pas sembler dur, mais faire une recherche google en premier. Les réponses précédentes fonctionnent, mais pour une plus explaination comlete voir
http://www.dbmotive.com/oracle_error_codes.php?errcode=01843
Si vous allez utiliser le format par défaut comme vous faites, alors vous devriez savoir ce qui est le premier
Il y a deux possibilités:
-
La fonction TO_DATE échoue en raison du format de date par défaut (comme par d'autres réponses déjà données ici).
-
La
pd_end_dt
colonne n'est pas une colonne de date. La requête tente de convertir les valeurs enpd_end_dt
aux dates antérieures à la comparaison, et à défaut sur l'une des lignes.
Pour démontrer:
SQL> create table t1 (datestrings varchar2(10));
SQL> insert into t1 values ('01/01/2009');
SQL> insert into t1 values ('02/01/2009');
SQL> insert into t1 values ('01/XX/2009');
SQL> select * from t1 where datestrings > '01/01/2009';
DATESTRINGS
-----------
02/01/2009
01/XX/2009
2 rows selected
SQL> select * from t1 where datestrings > TO_DATE('01/01/2009');
ORA-01843: not a valid month
SQL> select * from t1 where datestrings > TO_DATE('01/01/2009','DD/MM/YYY');
ORA-01843: not a valid month