2015-02-06 137 views

回答

3

考虑任何特定的日期/时间值,该表达式将返回前面的周日的午夜

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/

+0

优秀......非常感谢。这正是我需要的! – Bob 2015-02-06 20:08:57

相关问题