Пожалуйста, дайте мне знать проблему с помощью следующего 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('01/01/2009', 'dd/mm/yyyy')

Есть две возможности:

  1. Функция TO_DATE не работает из-за формата даты по умолчанию (согласно другим ответам, уже приведенным здесь).

  2. Колонка 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

Если вы собираетесь использовать формат по умолчанию, как вы делаете, то вы должны выяснить, что это в первую очередь

Другие вопросы по тегам