2016-10-17 146 views
0

如何獲得Redshift的「週一至週日」最後3個月的日期?如何獲取「週一至週日」最後3個月的日期在Redshift中?

S.no Start_dt End_dt week 
1 18-Jul-16 24-Jul-16 Week1 
2 25-Jul-16 31-Jul-16 Week2 
3 1-Aug-16 7-Aug-16 Week3 
4 8-Aug-16 14-Aug-16 Week4 
5 15-Aug-16 21-Aug-16 Week5 
6 22-Aug-16 28-Aug-16 Week6 
7 29-Aug-16 4-Sep-16 Week7 
8 5-Sep-16 11-Sep-16 Week8 
9 12-Sep-16 18-Sep-16 Week9 
10 19-Sep-16 25-Sep-16 Week10 
11 26-Sep-16 2-Oct-16 Week11 
12 3-Oct-16 9-Oct-16 Week12 
13 10-Oct-16 16-Oct-16 Week13 

我已經試過這樣:

select 
    trunc(date_trunc('week',sysdate)) st_dt, 
    trunc(date_trunc('week', sysdate)+6) ed_dt, 
    'week'||row_number() over (order by null) as week 

但它只返回當前一週的週一和週日。

+0

您能否澄清您的要求?你是在顯示你的查詢結果,還是你想要生成的輸出結果?你提供的SELECT語句有什麼問題?你試過什麼,你收到了什麼錯誤? –

+0

謝謝您的答覆。我選擇的語句僅返回當前週日期(星期一 - 星期日)。但我需要最後90天的日期(星期一 - 星期日)。 – Velu

回答

0

您可以使用generate_series()生成日期範圍:

SELECT 
    trunc(day)  as start_date, 
    trunc(day + 6) as end_date 
FROM 
    (select date_trunc('week', sysdate) + (generate_series(1, 12) * interval '1 week') as day) 
ORDER BY 1 ASC 

這導致:

week start week end 
2016-10-24 2016-10-30 
2016-10-31 2016-11-06 
2016-11-07 2016-11-13 
2016-11-14 2016-11-20 
2016-11-21 2016-11-27 
2016-11-28 2016-12-04 
2016-12-05 2016-12-11 
2016-12-12 2016-12-18 
2016-12-19 2016-12-25 
2016-12-26 2017-01-01 
2017-01-02 2017-01-08 
2017-01-09 2017-01-15 

請注意,在亞馬遜紅移generate_series()不能與現有的表來參加。它只能用作「僅限領導者」查詢。

+0

thanks.is工作好..... – Velu

相關問題