пожалуйста, дайте мне знать о проблеме со следующим запросом sql

StackOverflow https://stackoverflow.com/questions/1326502

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top