在 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的主要内容,如果未能解决你的问题,请参考以下文章