Даты Импалы на недели, месяцы, кварталы и годы - PullRequest
0 голосов
/ 08 января 2019

Я бы хотел получить следующие даты в запросе Импалы:

a. Sunday to Saturday Week (SSW):
1. First and Last day of Current week (SSW) 
2. First and Last day of Previous week(SSW)

b. Monday to Sunday Week (MSW):
1. First and Last day of Current week (MSW)
2. First and Last day of Previous week(MSW)

c. Month:
1. First and Last Day of Current Month 
2. First and Last Day of Previous Month 

d. Quarter:
1. First and Last Day of Current Quarter 
2. First and Last Day of Previous Quarter

e. Year:
1. First and Last Day of Current Year 
2. First and Last Day of Previous Year 

Это то, что у меня так далеко:

SELECT
--Month
date_add(last_day(add_months(current_timestamp(),-1)),1) as Frist_Day_of_Current_Month,

last_day(now()) as Last_Day_of_Current_Month,

date_add(last_day(add_months(current_timestamp(),-2)),1) as Frist_Day_of_Previous_Month,

last_day(add_months(current_timestamp(),-1)) as Last_Day_of_Previous_Month,

--Year
trunc(now(), 'Y') as Frist_Day_of_Current_Year,

date_sub(trunc(now(), 'YEAR'), 1) AS Last_Day_of_Previous_Year

1 Ответ

0 голосов
/ 15 января 2019

Вот даты:

ВЫБРАТЬ - ОДИН ДЕНЬ

TRUNC (СЕЙЧАС (), 'DD') КАК СЕГОДНЯ,

ДОБАВИТЬ (TRUNC (СЕЙЧАС (), 'DD'), -1) КАК ВЧЕРА,

ADDDATE (TRUNC (NOW (), 'DD'), -2) AS TWO_DAYS_AGO,

ADDDATE (TRUNC (NOW (), 'DD'), -3) AS THREE_DAYS_AGO,

ADDDATE (TRUNC (NOW (), 'DD'), -4) AS FOUR_DAYS_AGO,

ADDDATE (TRUNC (NOW (), 'DD'), -5) AS FIVE_DAYS_AGO,

ADDDATE (TRUNC (NOW (), 'DD'), -6) AS SIX_DAYS_AGO,

ADDDATE (TRUNC (NOW (), 'DD'), -7) AS WEEK_AGO,

- НЕДЕЛЯ

--SUNDAY TO SATURDAY (NEED TO SCHEDULE THE REPORT TO RUN ON ONLY ON MONDAYS)

TRUNC (СЕЙЧАС (), 'D') - ИНТЕРВАЛ 1 ДЕНЬ КАК FIRST_DAY_OF_CURRENT_WEEK_SS,

TRUNC (СЕЙЧАС (), 'D') + ИНТЕРВАЛ 5 ДНЯ КАК LAST_DAY_OF_CURRENT_WEEK_SS,

TRUNC (СЕЙЧАС (), 'D') - ИНТЕРВАЛ 8 ДНЯ КАК FIRST_DAY_OF_PREVIOUS_WEEK_SS,

TRUNC (СЕЙЧАС (), 'D') - ИНТЕРВАЛ 2 ДНЯ КАК LAST_DAY_OF_PREVIOUS_WEEK_SS,

--MONDAY TO SUNDAY (NEED TO SCHEDULE THE REPORT TO RUN ONLY ON MONDAYS)

TRUNC (NOW (), 'DY') AS FRIST_DAY_OF_CURRENT_WEEK_MS,

TRUNC (СЕЙЧАС (), 'DY') + ИНТЕРВАЛ 6 ДНЯ КАК LAST_DAY_OF_CURRENT_WEEK_MS,

TRUNC (NOW (), 'DY') - ИНТЕРВАЛ 7 ДНЯ КАК FIRST_DAY_OF_PREVIOUS_WEEK_MS,

TRUNC (NOW (), 'DY') - ИНТЕРВАЛ 1 ДНЯ КАК LAST_DAY_OF_PREVIOUS_WEEK_MS,

- МЕСЯЦ

DATE_ADD (LAST_DAY (ADD_MONTHS (CURRENT_TIMESTAMP (), - 1)), 1) AS FRIST_DAY_OF_CURRENT_MONTH,

LAST_DAY (NOW ()) AS LAST_DAY_OF_CURRENT_MONTH,

DATE_ADD (LAST_DAY (ADD_MONTHS (CURRENT_TIMESTAMP (), - 2)), 1) AS FRIST_DAY_OF_PREVIOUS_MONTH,

LAST_DAY (ADD_MONTHS (CURRENT_TIMESTAMP (), - 1)) AS LAST_DAY_OF_PREVIOUS_MONTH,

- * КВАРТАЛ 1051 *

TRUNC (NOW (), 'Q') AS FIRST_DAY_OF_CURRENT_QUARTER,

TRUNC (СЕЙЧАС (), 'Q') + ИНТЕРВАЛ 3 МЕСЯЦА - ИНТЕРВАЛ 1 ДЕНЬ КАК LAST_DAY_OF_CURRENT_QUARTER,

TRUNC (СЕЙЧАС (), 'Q') - ИНТЕРВАЛ 3 МЕСЯЦА КАК FIRST_DAY_OF_PREVIOUS_QUARTER,

TRUNC (СЕЙЧАС (), 'Q') - ИНТЕРВАЛ 1 ДНЯ КАК LAST_DAY_OF_PREVIOUS_QUARTER,

- YEAR

TRUNC (СЕЙЧАС (), 'Y') КАК FRIST_DAY_OF_CURRENT_YEAR,

TRUNC (NOW (), 'YEAR') + ИНТЕРВАЛ 1 ГОД - ИНТЕРВАЛ 1 ДЕНЬ КАК LAST_DAY_OF_CURRENT_YEAR,

TRUNC (NOW (), 'YEAR') - ИНТЕРВАЛ 1 ГОДА FRIST_DAY_OF_PREVIOUS_YEAR,

TRUNC (СЕЙЧАС (), 'Y') - ИНТЕРВАЛ 1 ДНЯ КАК LAST_DAY_OF_PREVIOUS_YEAR

Спасибо

С уважением, Ахмед

...