【问题标题】:Comparing date with sysdate in oracle在 oracle 中比较日期与 sysdate
【发布时间】: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

【问题讨论】:

  • 如果这些答案之一对您的解决方案有帮助,请将其标记为绿色。

标签: sql oracle date-arithmetic


【解决方案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。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2021-11-05
      • 1970-01-01
      • 2015-10-06
      • 2020-08-14
      相关资源
      最近更新 更多