我是Oracle 11g&我有一个关于查询的问题。
我有一个表dummy
,其created_date
列Date
。
我想要一个查询,它会返回created_date
+ 7天小于今天日期的所有记录。
Oracle 11g中的哪种查询可以实现此目的?
答案 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
分享并享受。