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

在oracle中使用星期六作为周结束日期计算周结束日期,oracle,datetime,time-series,Oracle,Datetime,Time Series,如果Oracle中有一个包含日期的字段,您将如何使用Sun thru Sat作为您的一周计算一周的结束日期。例如,如果日期是2015年1月26日(周一),则查询应返回2015年1月31日(周六)。如果日期是2015年1月31日,则查询应返回2015年1月31日。给定任何特定的日期/时间值,此表达式将返回前一个周日的午夜 TRUNC(whatever_time,'DAY') 所以,你可以这样做: SELECT TRUNC(whatever_time,'DAY') week_starting,

如果Oracle中有一个包含日期的字段,您将如何使用Sun thru Sat作为您的一周计算一周的结束日期。例如,如果日期是2015年1月26日(周一),则查询应返回2015年1月31日(周六)。如果日期是2015年1月31日,则查询应返回2015年1月31日。

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

 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(无论什么时间,'DAY')
遵守Oracle会话初始化参数“NLS\U TERRITORY”。例如,在欧洲,星期一被视为一周的第一个工作日。请尝试此操作

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

这里有完整的文字说明:

非常好……非常感谢。这正是我需要的!