Bitte teilen Sie mir das Problem mit der folgenden SQL -Abfrage mit
Frage
SELECT pd_end_dt,nrx_cnt
FROM wkly_lnd.lnd_wkly_plan_rx_summary
WHERE pd_end_dt >TO_DATE('01/01/2009')
Es gibt einen Fehler von ORA-01843: kein gültiger Monat
Ich lief Folgendes, es lief gut
Wählen Sie pd_end_dt, nrx_cnt aus wkly_lnd.lnd_wkly_plan_rx_summary wobei pd_end_dt> '01 -jan-09 '
Aber wenn ich wöchentliche Daten haben möchte, wie man dat macht
Keine korrekte Lösung
Andere Tipps
Sie geben keine Formatzeichenfolge an MITEINANDER AUSGEHEN. Dies kann dazu führen, dass Oracle Ihr Datum falsch behandelt. Versuchen
to_date('01/01/2009', 'DD/MM/YYYY')
Stattdessen (je nachdem, woher Sie kommen, möchten Sie möglicherweise die Reihenfolge von DD und MM ändern). Sehen Diese Beschreibung des TO_DATE -Format -String -Arguments für Details.
Versuchen
TO_DATE('01/01/2009', 'dd/mm/yyyy')
Ok, nicht hart zu klingen, aber zuerst eine Google -Suche durchführen. Die vorherigen Antworten funktionieren, aber für eine Comlete -Erklärung siehe
http://www.dbmotive.com/oracle_error_codes.php?errcode=01843
Wenn Sie das Standardformat so verwenden möchten, wie Sie es tun, sollten Sie herausfinden, was das zuerst ist
Es gibt zwei Möglichkeiten:
Die Funktion to_date fällt aufgrund des Standarddatumformats (gemäß den anderen hier angegebenen Antworten) fehl.
Die Kolumne
pd_end_dt
ist keine Datumsspalte. Die Abfrage versucht, die Werte in umzuwandelnpd_end_dt
Zu Daten vor dem Vergleich und fehlschlägen in einer der Zeilen.
Demonstrieren:
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