1. 程式人生 > >hive 時間函式 總結

hive 時間函式 總結

大資料,演算法qq交流群:397173819

做資料探勘的,離不開使用各種時間函式。
為了避免遺忘,以及後續各種抓瞎到處亂找,特意總結了hive中大部分常用的時間函式,方便自己也方便他們。

1.unix_timestamp()

返回當前時區的unix時間戳
返回型別:bigint
hive (tmp)> select unix_timestamp() from hive_sum limit 1;
1465875016

2.from_unixtime(bigint unixtime[,string format])

時間戳轉日期函式
返回型別:string
hive (tmp)> select from_unixtime(unix_timestamp(),’yyyyMMdd’) from hive_sum limit 1;
20160614

3.unix_timestamp(string date)

返回指定日期格式的的時間戳
返回型別:bigint
注意:如果後面只有date引數,date的形式必須為’yyyy-MM-dd HH:mm:ss’的形式。
hive (tmp)> select unix_timestamp(‘2016-06-01’) from hive_sum limit 1;
NULL
hive (tmp)> select unix_timestamp(‘2016-06-01 00:00:00’) from hive_sum limit 1;
1464710400

4.unix_timestamp(string date,string pattern)

返回指定日期格式的時間戳
返回型別:bigint
hive (tmp)> select unix_timestamp(‘2016-06-01’,’yyyyMMdd’) from hive_sum limit 1;
1449331200

5.to_date(string date)

返回時間欄位中的日期部分
返回型別:string
hive (tmp)> select to_date(‘2016-06-01 00:00:00’) from hive_sum limit 1;
2016-06-01

6.year(string date)

返回時間欄位中的年
返回型別:int
hive (tmp)> select year(‘2016-06-01 00:00:00’) from hive_sum limit 1;
2016

7.month(string date)

返回時間欄位中的月
返回型別:int
hive (tmp)> select month(‘2016-06-01’) from hive_sum limit 1;
6

8.day(string date)

返回時間欄位中的天
返回型別:int
hive (tmp)> select day(‘2016-06-01’) from hive_sum limit 1;
1

9.weekofyear(string date)

返回時間欄位是本年的第多少周
返回型別:int
hive (tmp)> select weekofyear(‘2016-06-01’) from hive_sum limit 1;
22

10.datediff(string enddate,string begindate)

返回enddate與begindate之間的時間差的天數
返回型別:int
hive (tmp)> select datediff(‘2016-06-01’,’2016-05-01’) from hive_sum limit 1;
31

11.date_add(string date,int days)

返回date增加days天后的日期
返回型別:string
hive (tmp)> select date_add(‘2016-06-01’,15) from hive_sum limit 1;
2016-06-16

12.date_sub(string date,int days)

返回date減少days天后的日期
返回型別:string
hive (tmp)> select date_sub(‘2016-06-01’,15) from hive_sum limit 1;
2016-05-17