Учитывая, что поле в Oracle, которое содержит даты, как бы вы подсчитали, какая дата окончания недели использует Sun thru Sat как ваша неделя. Например, если дата равна 1/26/2015 (это понедельник), запрос должен вернуться в 1/31/2015 (это суббота. Если дата равна 1/31/2015, тогда запрос должен вернуть 1 ./31/2015Рассчитайте дату окончания недели в оракуле, используя субботу в качестве даты окончания недели
1
A
ответ
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')
отличит параметр инициализации сеанса Oracle под названием «NLS_TERRITORY». Например, в Европе понедельник считается первым рабочим днем недели. Попробуй это.
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/
Отлично ... спасибо. Это именно то, что мне нужно! – Bob