2015-06-01 5 views
2

Как рассчитать данные за 7 дней (воскресенье-суббота предыдущей недели). в любой день недели он должен всегда давать воскресенье-субботу предыдущей недели. спасибоРассчитать на прошлой неделе данные в Teradata

+0

Пожалуйста, вы можете улучшить вопрос, что данные точно тебе нужно? Данные (таблицы и базы данных), которые изменились на прошлой неделе или что? – Rocketq

ответ

0

Другой штраф использования для таблицы календаря:

select calendar_date 
from 
sys_calendar.calendar 
where 
week_of_calendar = 
(select week_of_calendar from sys_calendar.calendar where calendar_date = current_Date) -1 
4

Какой у вас релиз Teradata?

TD14 поддерживает NEXT_DAY, которая возвращает первый «день недели» позже, чем указано дата:

SELECT NEXT_DAY(CURRENT_DATE, 'sun'), -- next sunday 
     NEXT_DAY(CURRENT_DATE, 'sun')-14, -- previous week's sunday 
     NEXT_DAY(CURRENT_DATE, 'sun')-8 -- previous week's saturday 

Edit:

В TD13 можно вычитать день недели, чтобы получить предыдущую неделю дату окончания , например (CURRENT_DATE - DATE '0001-01-01') MOD 7 + 1 возвращается с 1 по 7 на понедельник по воскресенье на основе известного понедельника 0001-01-01.

Modified для ваших потребностей (неделя начинается в воскресенье), это приводит к:

SELECT 
    CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 7), -- previous week's Sunday 
    CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 1) -- previous week's Saturday 
+0

Очень круто, не знал об этой функции. Кстати, я думаю, что вы имеете в виду -7 для вашей предыдущей субботы, а не 8. – Andrew

+0

Или, может быть, я не умею иногда читать и не понимаю, что вы проходили в воскресенье для параметра. – Andrew

+0

@dnoeth Its Teratada 13. Это не работает для меня. – user3438498