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

Top*_*der 7 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
Run Code Online (Sandbox Code Playgroud)

A.B*_*ade 16

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


小智 6

使用:

select distinct file_name as r 
from table_1 
where view_day >= TRUNC(SYSDATE-10)
Run Code Online (Sandbox Code Playgroud)


ada*_*ost 0

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

  • @TopCoder您可能想使用 TRUNC 而不是 TO_DATE。 (4认同)