2016-03-07 32 views
0

2015年12月27日是2015年53周,而且是當我運行date_part數(「W」,「每週1〜2016如何最後YEARWEEK設定在53亞馬遜紅移

的一部分,2015 - 12-27'+間隔'1天')它返回1,因爲2016-01-01是在同一周的星期五。

我添加了+間隔'1天',因爲我想讓這個星期從星期天運行到星期一。

我不確定如何將每年的最後一週設置爲53而不是1,因爲一年的最後一週與新年的第一週共享一天的情況就是如此。例如,我需要2015年12月27日至2015年12月31日只有53周,2016年1月1日至2016年1月2日是星期1

+0

見simmilar答案[如何設置1/1至1周和12/31至第53周(HTTP://計算器/我的問題/ 35416474/how-to-set-date-first-equal-to-sunday-in-amazon-redshift/35418696#35418696) – vtuhtan

+0

我在那裏看到了你的答案,但我還是無法弄清楚所需的案例陳述做最後一週的上一年53日,即上週與新年第一週共享天數。 – izzy84

+0

我剛計算出來(感謝vtuhtan):CASE WHEN date_part數( 'DOY',ReturnDate)> = 358和date_part數( 'W',ReturnDate +間隔 '1天')= 1 \t \t THEN 53 \t \t ELSE DATE_PART('W',ReturnDate +間隔'1天') END AS Week_Num – izzy84

回答

0

見simmilar答案How to set 1/1 to Week 1 and 12/31 to Week 53

這個case語句創建一個自定義函數或者用它在你的SQL語句:

CASE WHEN DATE_PART('DOY', ReturnDate) >= 358 AND DATE_PART('W', ReturnDate + interval '1 day') = 1 
    THEN 53 
    ELSE DATE_PART('W', ReturnDate + interval '1 day') 
END AS Week_Num