【问题标题】:SQL query to compare current date to match resultsSQL查询比较当前日期以匹配结果
【发布时间】:2022-01-04 08:57:03
【问题描述】:

我需要检查今天的日期是否等于创建日期 + 25 天。我的数据库是 Oracle 11g。

如果员工数据是在 11 月 1 日创建的,那么条件应该是今天 = (nov Ist, 25)。

我的日期格式是 03-NOV-17 12.18.11.307000000

我试过这个查询,但它不起作用

select * 
from employee 
where trunc(sysdate) = to_date(create_date, 'DD/MMM/YY') + 25;

我也试过dateadd,但显示错误“无法识别”

谢谢

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    假设 create_date 具有 TIMESTAMP 数据类型(因为您显示的是小数秒),那么您可以使用:

    SELECT * 
    FROM   employee 
    WHERE  create_date >= TRUNC(sysdate) - INTERVAL '25' DAY
    AND    create_date <  TRUNC(sysdate) - INTERVAL '24' DAY;
    

    (这将允许 Oracle 使用 create_date 列上的任何索引。)

    或者,您可以使用:

    SELECT * 
    FROM   employee 
    WHERE  TRUNC(create_date) = TRUNC(sysdate) - INTERVAL '25' DAY;
    

    (不会使用create_date 列上的任何索引;您需要在TRUNC(create_date) 上使用基于函数的单独索引。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多