【hive 日期函数】Hive常用日期函数整理

1、to_date:日期时间转日期函数

select to_date('2015-04-02 13:34:12');
输出:2015-04-02
    
    
  • 1
  • 2

2、from_unixtime:转化unix时间戳到当前时区的时间格式

select from_unixtime(1323308943,’yyyyMMdd’);
输出:20111208
    
    
  • 1
  • 2

3、unix_timestamp:获取当前unix时间戳

select unix_timestamp();
输出:1430816254
select unix_timestamp('2015-04-30 13:51:20');
输出:1430373080
    
    
  • 1
  • 2
  • 3
  • 4

4、year:返回日期中的年

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

5、month:返回日期中的月份

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

6、day:返回日期中的天

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

7、hour:返回日期中的小时

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

8、minute:返回日期中的分钟

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

9、second:返回日期中的秒

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

10、weekofyear:返回日期在当前周数

select weekofyear('2015-05-05 12:11:1');
输出:19
    
    
  • 1
  • 2

11、datediff:返回开始日期减去结束日期的天数

select datediff('2015-04-09','2015-04-01');
输出:8
    
    
  • 1
  • 2

12、date_sub:返回日期前n天的日期

select date_sub('2015-04-09',4);
输出:2015-04-05
    
    
  • 1
  • 2

13、date_add:返回日期后n天的日期

select date_add('2015-04-09',4);
输出:2015-04-13
    
    
  • 1
  • 2

14、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;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

15:Hive中取最近30天数据

datediff(CURRENT_TIMESTAMP ,gmt_create)<=30 
 
 
  • 1

16、Hive中 两个日期相差多少小时

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

输出:1

  • 1
  • 2
  • 3

17、Hive中 两个日期相差多少分钟

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

输出:60

  • 1
  • 2
  • 3

18、hive 计算某一个日期属于星期几,如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
 
 
  • 1
  • 2
  • 3

17、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);

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9





  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值