如何在Amazon Redshift中将DATEFIRST设置为等于星期日

时间:2016-02-15 18:25:46

标签: amazon-redshift

2016-01-01是2016年第1周,但也是2015年第53周。

当我运行SELECT DATE_PART(w, '2016-01-01')时,它会返回53,但当我运行SELECT DATE_PART(w, '2016-01-04')时,它会返回1

最有可能发生这种情况,因为Redshift将星期一定为本周的第1天,而不是星期日,因为它应该是。

不确定这是否能解决问题,但我需要的是将2016-01-01作为第1周以及2016-01-03至2016-01-09作为第2周等等...... < / p>

1 个答案:

答案 0 :(得分:1)

使用此case语句创建自定义函数或在SQL语句中使用它:

case when DATE_PART('W', dt)>=51 and EXTRACT(DOY FROM dt) < 8 then 1 else DATE_PART('W', dt)+1 end week_no

它将于1月1日开始计算数周。

http://sqlfiddle.com/#!15/ccb90/9