Пожалуйста, дайте мне знать проблему с помощью следующего SQL-запроса
SELECT pd_end_dt,nrx_cnt
FROM wkly_lnd.lnd_wkly_plan_rx_summary
WHERE pd_end_dt >TO_DATE('01/01/2009')
Это дает ошибку ORA-01843: недействительный месяц
я побежал следующее, это нормально
ВЫБЕРИТЕ pd_end_dt,nrx_cnt ОТ wkly_lnd.lnd_wkly_plan_rx_summary ГДЕ pd_end_dt > '01-Jan-09'
но если я хочу иметь недельные данные, как это сделать
4 ответа
Вы не передаете строку формата TO_DATE. Это может привести к неправильной обработке Oracle вашей даты. Пытаться
to_date('01/01/2009', 'DD/MM/YYYY')
вместо этого (в зависимости от того, где вы находитесь, вы можете изменить порядок DD и MM). Смотрите подробности в описании аргумента строки формата TO_DATE.
Есть две возможности:
Функция TO_DATE не работает из-за формата даты по умолчанию (согласно другим ответам, уже приведенным здесь).
Колонка
pd_end_dt
не столбец даты. Запрос пытается преобразовать значения вpd_end_dt
датам до сравнения, и провал на одной из строк.
Показывать:
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
Хорошо, чтобы не звучать резко, но сначала выполните поиск в Google. Предыдущие ответы работают, но более подробное объяснение см.
http://www.dbmotive.com/oracle_error_codes.php?errcode=01843
Если вы собираетесь использовать формат по умолчанию, как вы делаете, то вы должны выяснить, что это в первую очередь