пожалуйста, дайте мне знать о проблеме со следующим запросом 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 '
но если я хочу иметь недельные данные, как это сделать
Нет правильного решения
Другие советы
Вы не указываете строку формата для НА СЕГОДНЯШНИЙ ДЕНЬ.Это может привести к тому, что Oracle неправильно обработает вашу дату.Пытаться
to_date('01/01/2009', 'DD/MM/YYYY')
вместо этого (в зависимости от того, откуда вы родом, вы можете изменить порядок DD и MM).Видеть это описание строкового аргумента формата TO_DATE для получения подробной информации.
пытаться
TO_DATE('01/01/2009', 'dd/mm/yyyy')
Хорошо, чтобы не звучать грубо, но сначала выполните поиск в Google.Предыдущие ответы работают, но более полное объяснение см.
http://www.dbmotive.com/oracle_error_codes.php?errcode=01843
Если вы собираетесь использовать формат по умолчанию, как вы это делаете, сначала вам следует выяснить, что это такое.
Есть две возможности:
Функция 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