Hive时间函数总结

Hive时间函数总结

1:获取当前日期: current_date

select current_date;
2019-07-16

2:日期时间转日期函数:to_date(string timestamp)

select to_date('2017-09-15 11:12:00')
2017-09-15

3:计算两个日期之间的天数: datediff

select datediff('2017-09-15','2017-09-01')
14

4:日期增加和减少: date_add/date_sub(string startdate,int days)

select date_add('2017-09-15',1)
2017-09-16

select date_sub('2017-09-15',1)
2017-09-14

5:计算一年中的第几天

select date_format('2011-12-08 10:03:01', 'D');
342

6:计算一年中的第几周

select weekofyear('2011-12-08 10:03:01');
49

7:计算一月中的第几天

select dayofmonth('2011-12-08 10:03:01');
8

8:计算一周中的第几天

select dayofweek('2011-12-08 10:03:01');
5

9:计算当前日期是周几

select date_format('2011-12-08 10:03:01', 'EEEE');
Thursday

SELECT IF(pmod(datediff('2018-05-20', '1920-01-01') - 3, 7)='0', 7, pmod(datediff('2018-05-20', '1920-01-01') - 3, 7)) 

SELECT IF(current_date - 3, 7)='0', 7, pmod(current_date - 3, 7)) 

10,from_unixtime:转化unix时间戳到当前时区的时间格式

select from_unixtime(1323308943,’yyyyMMdd’);
20111208

11,unix_timestamp:获取当前unix时间戳

select unix_timestamp();
1430816254
select unix_timestamp('2015-04-30 13:51:20');
1430373080

12,year:返回日期中的年

select year('2015-04-02 11:32:12');
输出:2015

13,month:返回日期中的月份

select month('2015-12-02 11:32:12');
输出:12

14,day:返回日期中的天

select day('2015-04-13 11:32:12');
输出:13

15,hour:返回日期中的小时

select hour('2015-04-13 11:32:12');
输出:11

16,minute:返回日期中的分钟

select minute('2015-04-13 11:32:12');
输出:32

17,second:返回日期中的秒

select second('2015-04-13 11:32:56');
输出:56

18,from_unixtime+ unix_timestamp Hive中yyyymmdd和yyyy-mm-dd日期之间的切换

思想:先转换成时间戳,再由时间戳转换为对应格式。
--20171205转成2017-12-05 

select from_unixtime(unix_timestamp('20171205','yyyymmdd'),'yyyy-mm-dd') from dual;

--2017-12-05转成20171205

select from_unixtime(unix_timestamp('2017-12-05','yyyy-mm-dd'),'yyyymmdd') from dual;

19,hive返回上个月第一天和最后一天

select trunc(add_months(CURRENT_TIMESTAMP,-1),'MM')


select concat(substr(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1),1,7),'-01'); 


--上个月最后一天
select date_sub(trunc(CURRENT_TIMESTAMP,'MM'),1);

20, 两个日期相差多少小时

select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/3600
输出:1

21, 两个日期相差多少分钟

select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/60
输出:60

22,求一个月的最后一天

select last_day(current_date);
2019-09-30

23,求本周一

select date_sub(next_day(to_date(CURRENT_TIMESTAMP),'MO'),7);
2020-06-01

24,求上周一

select date_sub(next_day(to_date(CURRENT_TIMESTAMP),'MO'),14);
2020-05-25

25,求下周一

select date_sub(next_day(to_date(CURRENT_TIMESTAMP),'MO'),0);
2020-06-08

26,求下下周一

select date_add(next_day(to_date(CURRENT_TIMESTAMP),'MO'),7);
2020-06-15

27,求上月一号

 select trunc(add_months(to_date(CURRENT_TIMESTAMP),-1),'MM');
2020-05-01

28,求本月一号

select trunc(to_date(CURRENT_TIMESTAMP),'MM');
2020-06-01

29,求下月一号

select trunc(add_months(to_date(CURRENT_TIMESTAMP),1),'MM');
2020-07-01

30,next_day


你可能感兴趣的:(HIve)