#sql #oracle
#sql #Oracle
Вопрос:
У меня есть запись в таблице с именем to_log, где дата в end_tmp =’12-SEP-20′. У меня есть требование, чтобы данные были выбраны для end_tmp < (sysdate-30). Когда я проверяю (выберите sysdate-30 из dual) Я получаю ’12-SEP-20′. Итак, для этой даты мой запрос не должен возвращать никаких данных, поскольку он должен быть меньше, чем sysdate-30, но в моем случае
(SELECT log_idr,trunc(end_tmp)
FROM to_log
WHERE end_tmp < (SYSDATE-30);
На самом деле возвращает данные. Что я могу сделать?
Комментарии:
1. 12-20 СЕНТЯБРЯ, это 2012 год?
2. Нет, это сегодняшняя дата 2020 год
3. end_tmp содержит даты в строковом формате или является столбцом типа DATE ?
4. В заголовке вашего вопроса говорится, что вы получаете сообщение об ошибке, в теле говорится, что вы получаете возвращаемые данные — так что же это?
Ответ №1:
Из того, что вы опубликовали, может быть
where to_date(end_tmp, 'dd-mon-yy', 'nls_date_language = english') < sysdate - 30
Ответ №2:
Добавление trunc сработало. Я добавил trunc(end_tmp)