2016-10-17 140 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

相关问题