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