在oracle中使用星期六作为周末结束日期计算周结束日期

Bob*_*Bob 2 oracle datetime time-series

给定 Oracle 中包含日期的字段,您将如何使用周日至周六作为您的周来计算周结束日期。例如,如果日期是 1/26/2015(星期一),则查询应返回 1/31/2015(星期六。如果日期是 1/31/2015,则查询应返回 1 /31/2015。

O. *_*nes 6

给定任何特定的日期/时间值,此表达式将返回前一个星期日的午夜。

 TRUNC(whatever_time,'DAY')
Run Code Online (Sandbox Code Playgroud)

所以,你可以做这样的事情:

 SELECT TRUNC(whatever_time,'DAY') week_starting,
        TRUNC(whatever_time,'DAY')  + 6 week_ending,
        SUM(sales)
   FROM table
  GROUP BY TRUNC(whatever_time,'DAY')
Run Code Online (Sandbox Code Playgroud)

你会得到你需要的。

请注意,它TRUNC(whatever_time,'DAY')遵循名为“NLS_TERRITORY”的 Oracle 会话初始化参数。例如,在欧洲,星期一被视为一周的第一个工作日。尝试这个。

ALTER SESSION SET NLS_TERRITORY=GERMANY;
SELECT TRUNC( DATE '2013-12-31', 'DAY'),
       TRUNC( DATE '2014-01-03', 'DAY')
  FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

完整的文章在这里:http ://www.plumislandmedia.net/sql-time-processing/using-sql-report-time-intervals-oracle/