1、to_date:日期時(shí)間轉(zhuǎn)日期函數(shù)
select to_date('2015-04-02 13:34:12');
輸出:2015-04-02
2簿煌、from_unixtime:轉(zhuǎn)化unix時(shí)間戳到當(dāng)前時(shí)區(qū)的時(shí)間格式
select from_unixtime(1323308943,’yyyyMMdd’);
輸出:20111208
3堕澄、unix_timestamp:獲取當(dāng)前unix時(shí)間戳
select unix_timestamp();
輸出:1430816254
select unix_timestamp('2015-04-30 13:51:20');
輸出:1430373080
4胎署、year:返回日期中的年
select year('2015-04-02 11:32:12');
輸出:2015
5赔蒲、month:返回日期中的月份
select month('2015-12-02 11:32:12');
輸出:12
6赠尾、day:返回日期中的天
select day('2015-04-13 11:32:12');
輸出:13
7辐马、hour:返回日期中的小時(shí)
select hour('2015-04-13 11:32:12');
輸出:11
8拷橘、minute:返回日期中的分鐘
select minute('2015-04-13 11:32:12');
輸出:32
9、second:返回日期中的秒
select second('2015-04-13 11:32:56');
輸出:56
10、weekofyear:返回日期在當(dāng)前周數(shù)
select weekofyear('2015-05-05 12:11:1');
輸出:19
11冗疮、datediff:返回開(kāi)始日期減去結(jié)束日期的天數(shù)
select datediff('2015-04-09','2015-04-01');
輸出:8
12萄唇、date_sub:返回日期前n天的日期
select date_sub('2015-04-09',4);
輸出:2015-04-05
13、date_add:返回日期后n天的日期
select date_add('2015-04-09',4);
輸出:2015-04-13
14术幔、from_unixtime+ unix_timestamp Hive中yyyymmdd和yyyy-mm-dd日期之間的切換
思想:先轉(zhuǎn)換成時(shí)間戳另萤,再由時(shí)間戳轉(zhuǎn)換為對(duì)應(yīng)格式。
--20171205轉(zhuǎn)成2017-12-05
select from_unixtime(unix_timestamp('20171205','yyyymmdd'),'yyyy-mm-dd') from dual;
--2017-12-05轉(zhuǎn)成20171205
select from_unixtime(unix_timestamp('2017-12-05','yyyy-mm-dd'),'yyyymmdd') from dual;
15诅挑、Hive中取最近30天數(shù)據(jù)
datediff(CURRENT_TIMESTAMP ,gmt_create)<=30
16四敞、Hive中 兩個(gè)日期相差多少小時(shí)
select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/3600
輸出:1
17、Hive中 兩個(gè)日期相差多少分鐘
select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/60
輸出:60
18拔妥、hive 計(jì)算某一個(gè)日期屬于星期幾忿危,如2018-05-20 是星期日
SELECT IF(pmod(datediff('2018-05-20', '1920-01-01') - 3, 7)='0', 7, pmod(datediff('2018-05-20', '1920-01-01') - 3, 7))
輸出:7
17、hive返回上個(gè)月第一天和最后一天
--上個(gè)月第一天
select trunc(add_months(CURRENT_TIMESTAMP,-1),'MM')
select concat(substr(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1),1,7),'-01');
--上個(gè)月最后一天
select date_sub(trunc(CURRENT_TIMESTAMP,'MM'),1);
-- 獲取當(dāng)月第一天
trunc('2018-09-28','MM')
-- 獲取當(dāng)月最后一天
last_day('2018-09-28')