Получение ошибки в формате даты в sql oracle

#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)