Hive时间格式转换

时间格式转换2020-09-19 00:15:32=>20200919

原时间格式:2020-09-19 00:15:32
目标格式:20200919
首先使用Hive的函数进行转换

	1. to_date('2020-09-19 00:15:32') ==> 2020-09-19
	2. regexp_replace('2020-09-19','-',''==> 20200919

结果语句:

regexp_replace(to_date('2020-09-19 00:15:32'),'-','') ==> 20200919

时间格式计算

两个秒级时间格式进行相减得到分钟数

原始数据:

2020-09-19 00:12:01

2020-09-19 00:11:46

使用的hive函数为: unix_timestamp :获取当前时间戳

同时使用的是日期转时间戳

unix_timestamp('2020-09-19 00:12:01') - unix_timestamp('2020-09-19 00:11:46')
  1. 当只有一个参数时 unix_timestamp(string timestame),此时输入的参数必须为’yyyy-MM-dd HH:mm:ss’格式,否则返回null
    select unix_timestamp(‘2019-08-15 16:40:00’) --1565858400
    select unix_timestamp(‘2019-08-15’) --null

  2. 当有两个参数时,此时需要保证两个参数的对应关系
    select unix_timestamp(‘2019-08-15’,‘yyyy-MM-dd’) --1565798400
    select unix_timestamp(‘2019-08-15 16:40:00’,‘yyyy-MM-dd HH:mm:ss’) --1565858400
    select unix_timestamp(‘2019-08-15’,‘yyyy-MM-dd HH:mm:ss’) --null

最后的结算的结果为:

ceil((unix_timestamp('2020-09-19 00:12:01') - unix_timestamp('2020-09-19 00:11:46'))/60 分钟数(向上取整)

ceil((unix_timestamp('2020-09-19 00:12:01') - unix_timestamp('2020-09-19 00:11:46'))/60/60 小时数(向上取整)
select datediff(from_unixtime(unix_timestamp('20150514','yyyyMMdd'),'yyyy-MM-dd'),from_unixtime(unix_timestamp('20150415','yyyyMMdd'),'yyyy-MM-dd')) from mid.dual;
结果为:29
select datediff(from_unixtime(unix_timestamp('20150514','yyyyMMdd'),'yyyy/MM/dd') , from_unixtime(unix_timestamp('20150415','yyyyMMdd'),'yyyy/MM/dd')) from mid.dual;
结果为null
Hive不支持‘/’的日期相减
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值