1. 程式人生 > >Hive使用pmod函式實現dayofweek函式功能

Hive使用pmod函式實現dayofweek函式功能

dayofweek在hive2.2.0開始支援,低版本的hive原生未提供dayofweek函式(獲取一個日期是星期幾的方法),所以只有我們自己編寫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