我有一个查询,我想在不同的持续时间(本月,本周等)获取一些数据。
对于“本周”专栏,我希望它能够获取最近一个星期一到现在的所有数据。我该怎么做?
到目前为止,我有以下SQL:
WHERE prla.CREATION_DATE >= SYSDATE - ?
答案 0 :(得分:2)
trunc(sysdate, 'iw')
就是你所追求的。 IW是指定日期所在星期一的格式掩码(因为星期一是本周开始的ISO标准)。 E.g:
with dates as (select trunc(sysdate, 'mm') - 10 + level dt
from dual
connect by level <= 40)
select dt
from dates
where dt >= trunc(sysdate, 'iw')
and dt <= sysdate; -- only needed if the dates in the column could be beyond now.
答案 1 :(得分:1)
是的,这样做:但最好使用sysdate-8
。因为如果当天与您的搜索日相同,它将返回当前日期。对于例如。
select next_day(sysdate-7,'WED') from dual;
OUTPUT
19-AUG-15
下面的内容将在上周给你
select next_day(sysdate-8,'WED') from dual;
OUTPUT
12-AUG-15
答案 2 :(得分:0)
您应该截断当前日期。
TRUNC(SYSDATE, 'DAY')
这应该会给你一周的第一天,也就是很多国家的星期一。
如果它给你上一个星期天而你应该这样做。
TRUNC(SYSDATE, 'DAY')+1
答案 3 :(得分:-1)
我现在发现这样做了:
select next_day (sysdate-7, 'MONDAY') Last_Monday from dual;
所以在我的情况下,我们可以删除SYSDATE减法,它只是:
prla.CREATION_DATE >= next_day (sysdate-7, 'MONDAY')