Hive中日期處理
阿新 • • 發佈:2019-02-12
1、日期函式UNIX時間戳轉日期函式:from_unixtime()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
from_unixtime | from_unixtime(bigint unixtime[, string format]) | string | 轉化UNIX時間戳(從1970-01-01 00:00:00 UTC到指定時間的秒數)到當前時區的時間格式 |
hive (temp)> select from_unixtime(1323308943,'yyyyMMdd') from dual;
20111208
hive (temp)> select from_unixtime(1323308943,'yyyy-MM-dd') from dual ;
2011-12-08
select from_unixtime(cast(time as bigint),'yyyyMMdd') from dual;
20111208
20111208
20111209
20111211
20111212
20111213
20111215
20111216
2、當前UNIX時間戳函式: unix_timestamp()
2.1 獲取當前UNIX時間戳函式
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
unix_timestamp | unix_timestamp() | bigint | 獲得當前時區的UNIX時間戳 |
hive (temp)> select unix_timestamp() from dual;
1472105939
2.2 日期轉UNIX時間戳函式
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
unix_timestamp | unix_timestamp(string date) | bigint | 轉換格式為"yyyy-MM-dd HH:mm:ss"的日期到UNIX時間戳。轉化失敗,則返回0 |
hive (temp)> select unix_timestamp('2016-08-25 13:02:03') from dual;
1472101323
2.3 指定格式日期轉UNIX時間戳函式
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
unix_timestamp | unix_timestamp(string date, string pattern) | bigint | 轉換格式為"yyyyMMdd HH:mm:ss"的日期到UNIX時間戳。轉化失敗,則返回0 |
hive (temp)> select unix_timestamp('20160825 13:02:03','yyyyMMdd HH:mm:ss') from dual;
1472101323
3、日期時間轉日期函式: to_date()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
to_date | to_date(string timestamp) | string | 返回日期時間欄位中的日期部分 |
hive (temp)> select to_date('2016-12-08 10:03:01') from dual;
2016-12-08
4、日期轉年函式: year()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
year | year(string date) | int | 返回日期中的年 |
hive (temp)> select year('2016-12-08 10:03:01') from dual;
2016
hive (temp)> select year('2016-12-08') from dual;
2016
5、日期轉月函式: month()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
month | month(string date) | int | 返回日期中的月份 |
hive (temp)> select month('2016-12-08 10:03:01') from dual;
12
hive (temp)> select month('2016-11-08') from dual;
11
6、日期轉天函式: day()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
day | day(string date) | int | 返回日期中的天 |
hive (temp)> select day('2016-12-08 10:03:01') from dual;
8
hive (temp)> select day('2016-11-18') from dual;
18
7、日期轉小時函式: hour()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
hour | hour(string date) | int | 返回日期中的小時 |
hive (temp)> select hour('2016-12-08 10:03:01') from dual;
10
8、日期轉分鐘函式: minute()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
minute | minute(string date) | int | 返回日期中的分鐘 |
hive (temp)> select minute('2016-12-08 10:03:01') from dual;
3
9、日期轉秒函式: second()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
second | second(string date) | int | 返回日期中的秒 |
hive (temp)> select second('2016-12-08 10:03:01') from dual;
1
10、日期轉周函式: weekofyear()
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
weekofyear | weekofyear(string date) | int | 返回日期在當前的週數 |
hive (temp)> select weekofyear('2016-12-08 10:03:01') from dual;
49
11、日期比較函式: datediff(string enddate, string startdate)
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
datediff | datediff(string enddate, string startdate) | int | 返回結束日期減去開始日期的天數 |
hive (temp)> select datediff('2016-12-08','2016-12-02') from dual;
6
12、日期增加函式: date_add(string startdate, int days)
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
date_add | date_add(string startdate, int days) | string | 返回開始日期startdate增加days天后的日期 |
hive (temp)> select date_add('2016-12-08',10) from dual;
2016-12-18
#當前日期為2016-08-25,在此基礎上加7天
hive (temp)> select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;
2016-09-01
13、日期減少函式:date_sub (string startdate, int days)
函式 | 格式 | 返回值 | 說明 |
---|---|---|---|
date_sub | date_sub(string startdate, int days) | string | 返回開始日期startdate減少days天后的日期 |
hive (temp)> select date_sub('2016-12-08',10) from dual;
2016-11-28
#當前日期為2016-08-25,在此基礎上減7天
hive (temp)> select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual;
2016-08-18