做資料探勘的,離不開使用各種時間函式。
為了避免遺忘,以及後續各種抓瞎到處亂找,特意總結了hive中大部分常用的時間函式,方便自己也方便他們。
返回當前時區的unix時間戳
返回型別:bigint
hive (tmp)> select unix_timestamp() from hive_sum limit 1;
1465875016
時間戳轉日期函式
返回型別:string
hive (tmp)> select from_unixtime(unix_timestamp(),『yyyymmdd』) from hive_sum limit 1;
20160614
返回指定日期格式的的時間戳
返回型別: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
返回指定日期格式的時間戳
返回型別:bigint
hive (tmp)> select unix_timestamp(『2016-06-01』,『yyyymmdd』) from hive_sum limit 1;
1449331200
返回時間欄位中的日期部分
返回型別:string
hive (tmp)> select to_date(『2016-06-01 00:00:00』) from hive_sum limit 1;
2016-06-01
返回時間欄位中的年
返回型別:int
hive (tmp)> select year(『2016-06-01 00:00:00』) from hive_sum limit 1;
2016
返回時間欄位中的月
返回型別:int
hive (tmp)> select month(『2016-06-01』) from hive_sum limit 1;
6返回時間欄位中的天
返回型別:int
hive (tmp)> select day(『2016-06-01』) from hive_sum limit 1;
1返回時間欄位是本年的第多少周
返回型別:int
hive (tmp)> select weekofyear(『2016-06-01』) from hive_sum limit 1;
22返回enddate與begindate之間的時間差的天數
返回型別:int
hive (tmp)> select datediff(『2016-06-01』,『2016-05-01』) from hive_sum limit 1;
31返回date增加days天後的日期
返回型別:string
hive (tmp)> select date_add(『2016-06-01』,15) from hive_sum limit 1;
2016-06-16
返回date減少days天後的日期
返回型別:string
hive (tmp)> select date_sub(『2016-06-01』,15) from hive_sum limit 1;
2016-05-17
hive中的時間函式總結
日期轉時間戳 從1970 01 01 00 00 00 utc到指定時間的秒數 select unix timestamp 獲得當前時區的unix時間戳 select unix timestamp 2017 09 15 14 23 00 select unix timestamp 2017 09 1...
Hive 時間函式
to date 日期時間轉日期函式select to date 2015 04 02 13 34 12 輸出 2015 04 02from unixtime 轉化unix時間戳到當前時區的時間格式select from unixtime 1323308943,yyyymmdd 輸出 20111208...
hive時間函式
語法 from unixtime bigint unixtime stringformat 返回值 string 說明 轉化unix時間戳 從1970 01 0100 00 00 utc到指定時間的秒數 到當前時區的時間格式 舉例 select from unixtime 1323308943,yy...