在oracle中将日期与sysdate进行比较

时间:2012-02-05 06:29:34

标签: sql oracle date-arithmetic

我有一个“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 个答案:

答案 0 :(得分:16)

您不应在日期上使用to_date,To_date用于将varchar转换为日期,而不是日期。
如果你确实在日期上使用了to_date函数,那么oracle会根据nls_date_format将它称为字符串,这可能会因环境的不同而不同。
正如@jonearles所说,如果你想删除sysdate中的时间,那么使用TRUNC

答案 1 :(得分:6)

使用:

select distinct file_name as r 
from table_1 
where view_day >= TRUNC(SYSDATE-10)

答案 2 :(得分:0)

错误显示VIEW_DAY列是varchar,因此您需要将DATE转换为String。使用TO_CHAR或将VIEW_DAY转换为日期类型。