在 oracle 中比较日期与 sysdate

Posted

技术标签:

【中文标题】在 oracle 中比较日期与 sysdate【英文标题】:Comparing date with sysdate in oracle 【发布时间】:2012-02-27 04:15:12 【问题描述】:

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

【问题讨论】:

如果这些答案之一对您的解决方案有帮助,请将其标记为绿色。 【参考方案1】:

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

【讨论】:

【参考方案2】:

使用:

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

【讨论】:

【参考方案3】:

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

【讨论】:

不。 view_date 是 DATE 类型 谢谢!你说的对。我系统中 view_date 和 sysdate 的默认日期格式都设置为 DD-MON-YYYY。将格式更改为相同有帮助! @TopCoder 您可能想使用 TRUNC 而不是 TO_DATE。

以上是关于在 oracle 中比较日期与 sysdate的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL - 比较多行与日期

比较Business Objects Data Integrator与Oracle中的日期

在 oracle 中使用 WEEK 进行计算

在oracle中比较两个日期

在查询中比较 oracle 日期时间失败并且不返回任何记录

在 where 子句问题中的 Oracle 日期比较