hive原生未提供獲取一個日期是星期幾的方法,所以只有我們自己編寫udf函數提供,udf就不說了,在這裏給出了一個使用hive原生函數獲取星期幾的技巧。
pmod(datediff(#date#, '1920-01-01') - 3, 7)
#date#表示給的日期。
輸出的結果爲0-6的數,分別表示 日,一,二 ... 六。
2016-01-01 5
2016-01-02 6
2016-01-03 0
如果想讓週一到週六對應數字1-7只需要將查詢出來的數據進行判斷就行了,如下:
IF(pmod(datediff(#date#, '1920-01-01') - 3, 7)='0',
7,
pmod(datediff(#date#, '1920-01-01') - 3, 7))
2016-01-01 5
2016-01-02 6
2016-01-03 7