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>
答案 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日开始计算数周。