在Oracle SQL中,如何只获取本周的时间?

时间:2015-08-19 06:17:10

标签: sql oracle

我有一个查询,我想在不同的持续时间(本月,本周等)获取一些数据。

对于“本周”专栏,我希望它能够获取最近一个星期一到现在的所有数据。我该怎么做?

到目前为止,我有以下SQL:

WHERE  prla.CREATION_DATE >= SYSDATE - ?

4 个答案:

答案 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') 

source