hive根據日期算哪一年的第幾周(年周)以及算周幾星期幾

一、取年周

按照習慣,跨年的週中的在哪一年的天數多就算哪一年的周,所以日期所在的年不一定是周所在的年,比如2016-01-01是2015年53周。

可以通過以下sql判斷跨年的周屬於哪一年,實現得到前一天所在的年周

select year(date_sub(next_day(date_sub(current_date,1),'MO'),4))*100+weekofyear(date_sub(current_date,1));

例如:今天是2019-03-02,前一天是2019-03-01,是第201909周。

二、算周幾

根據一個日期算它是一週中的星期幾

大部分的算法是:

-- ${date}爲日期參數
pmod(datediff(${date}, '1920-01-01') - 3, 7)

既某個日期和一個已知周幾的日期相差的天數除以一週7天,餘數既爲周幾,但是這樣週一至週六分別爲1-6,但週日就會爲0,所以將週日變成我們習慣的7可以這樣寫:

-- ${date}爲日期參數
IF(pmod(datediff(${date}, '1920-01-01') - 3, 7)='0', 7, pmod(datediff(${date}, '1920-01-01') - 3, 7))

這裏還有一種本人常用的方法:

-- ${date}爲日期參數
-- next_day(${date},'MO')爲下週一的日期

8-datediff(next_day(${date},'MO'),${date})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章