Сравнение даты с sysdate в oracle - PullRequest
7 голосов
/ 05 февраля 2012

У меня есть столбец типа "DATE", и я хочу выполнить запрос по нему, сравнивая его с sysdate.

Но я получаю следующую ошибку, Может кто-нибудь сообщить мне, чтоЯ здесь скучаю?

SQL> select distinct file_name as r 
     from table_1 
     where view_day >= TO_DATE(SYSDATE-10, 'YYYY/MM/DD');

ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected

Ответы [ 3 ]

16 голосов
/ 05 февраля 2012

Вы не должны использовать to_date для даты, To_date для приведения varchar к дате, а не к дате.
Если вы используете функцию to_date для даты, то oracle будет называть ее строкойto nls_date_format, который может варьироваться в разных средах.
Как сказал @jonearles, если вы хотите удалить время в sysdate, используйте TRUNC

6 голосов
/ 05 февраля 2012

USE:

select distinct file_name as r 
from table_1 
where view_day >= TRUNC(SYSDATE-10)
0 голосов
/ 05 февраля 2012

Ошибка показывает, что столбец VIEW_DAY имеет тип varchar, поэтому вам необходимо преобразовать DATE в строку. Используйте TO_CHAR или конвертируйте VIEW_DAY в тип даты.

...