Как рассчитать данные за 7 дней (воскресенье-суббота предыдущей недели). в любой день недели он должен всегда давать воскресенье-субботу предыдущей недели. спасибоРассчитать на прошлой неделе данные в Teradata
ответ
Другой штраф использования для таблицы календаря:
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
Какой у вас релиз 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
Очень круто, не знал об этой функции. Кстати, я думаю, что вы имеете в виду -7 для вашей предыдущей субботы, а не 8. – Andrew
Или, может быть, я не умею иногда читать и не понимаю, что вы проходили в воскресенье для параметра. – Andrew
@dnoeth Its Teratada 13. Это не работает для меня. – user3438498
Пожалуйста, вы можете улучшить вопрос, что данные точно тебе нужно? Данные (таблицы и базы данных), которые изменились на прошлой неделе или что? – Rocketq