Oracle 11g中的日期比较

时间:2012-01-02 23:11:56

标签: oracle oracle11g date-arithmetic

我是Oracle 11g&我有一个关于查询的问题。

我有一个表dummy,其created_dateDate

我想要一个查询,它会返回created_date + 7天小于今天日期的所有记录。

Oracle 11g中的哪种查询可以实现此目的?

3 个答案:

答案 0 :(得分:4)

Oracle允许您使用+进行日期算术,所以

where table.created_date >= sysdate
and table.created_date < sysdate + 7

会在现在和现在之间找到行之间加上7天。

如果您不想包含时间组件,可以使用trunc()功能

where trunc(table.created_date) >= trunc(sysdate)
and trunc(table.created_date) < trunc(sysdate) + 7

答案 1 :(得分:4)

我认为rejj的解决方案将为您提供从现在到未来七天的记录。根据您的描述,听起来您可能想要在过去七天内记录这些记录。我这样做:

WHERE created_date <= SYSDATE
  AND created_date >= SYSDATE - 7

这可能更清楚,也是等同的:

WHERE created_date BETWEEN SYSDATE AND (SYSDATE - 7)

请注意,使用TRUNC()将导致优化器绕过您在created_date上的任何索引,除非您定义了功能索引。

答案 2 :(得分:0)

使用INTERVAL常量可以使日期算术更清晰,如

SELECT *
  FROM DUMMY
  WHERE CREATED_DATE >= TRUNC(SYSDATE) - INTERVAL '7' DAY

分享并享受。