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

时间:2015-02-06 19:56:20

标签: oracle datetime time-series

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

1 个答案:

答案 0 :(得分:4)

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

 TRUNC(whatever_time,'DAY')

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

 SELECT TRUNC(whatever_time,'DAY') week_starting,
        TRUNC(whatever_time,'DAY')  + 6 week_ending,
        SUM(sales)
   FROM table
  GROUP BY TRUNC(whatever_time,'DAY')

并且您将获得所需的一切。

请注意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;

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