Оракул 10g запрос против отметки времени
У меня проблемы с запросами из таблицы с колонкой act_start timestamp(6)
в Oracle 10 БД. Я хотел бы получить все строки старше 10 дней (строки с act_start
значение поля старше 10 дней с текущего дня) но у меня не получается.
Я пробовал с разными запросами, но они не работают
Например:
select act_start
from wfmactionstates_tab
where act_start < (systimestamp -10).
Все строки таблицы возвращаются;
select *
from wfmactionstates_tab
where cast(act_start as date) < (sysdate -10).
Все строки таблицы возвращаются
1 ответ
Как заметили другие, ваши запросы верны в терминах SQL. Поэтому, если они возвращают все строки, возможен только один вывод: все ваши строки содержат данные, возраст которых превышает десять дней.
Если это не то, что вы ожидаете - и тот факт, что вы задаете вопрос здесь, предполагает, что это не так - тогда должна быть проблема с вашими данными. Вероятность того, что это вариант проблемы 2000 года: каким-то образом в данных вашей базы данных отсутствует элемент столетия даты. То, что вы думаете, что 26 января 2013 года хранится в базе данных как 26 января 0013 (или, возможно, менее вероятно, 26 января 1913 года). Очевидно, что это более десяти дней назад.
Вы можете легко проверить, так ли это на самом деле:
select distinct to_char(your_date, 'CC') from your_table;
Если я прав, это не вернется 21
, Тогда возникает вопрос, почему все даты в вашей базе данных имеют неправильный век? Который является вопросом для разработчиков, которые написали подсистемы ввода данных.