2009-08-25 3 views
1
SELECT pd_end_dt,nrx_cnt 
FROM wkly_lnd.lnd_wkly_plan_rx_summary 
WHERE pd_end_dt >TO_DATE('01/01/2009') 

Il est une erreur donnant ORA-01843: pas un mois valides'il vous plaît laissez-moi savoir la question avec requête suivante sql


je courais 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 semaine sages comment d o dat

+2

suggestion non relié: utiliser la table plus propres et les noms de colonnes avant qu'il ne soit trop tard. Une fois que vous commencez à créer des requêtes plus complexes, vous me remercierez. – colithium

Répondre

3

essayer

TO_DATE('01/01/2009', 'dd/mm/yyyy') 
4

Vous ne donnez pas une chaîne de format à TO_DATE. Cela pourrait empêcher Oracle de gérer votre date. Essayez

to_date('01/01/2009', 'DD/MM/YYYY') 

à la place (selon l'endroit où vous êtes, vous pouvez modifier l'ordre de DD et MM). Voir this description of the TO_DATE format string argument pour plus de détails.

0

OK pour ne pas paraître dur, mais faites d'abord une recherche google. Les réponses précédentes fonctionnent, mais pour une plus comlete explaination 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

0

Il y a deux possibilités:

  1. La fonction TO_DATE échoue en raison du format de date par défaut (conformément aux autres réponses déjà données ici). La colonne pd_end_dt n'est pas une colonne de date. La requête tente de convertir les valeurs en pd_end_dt en dates antérieures à la comparaison et en échouant 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 
Questions connexes