hive中两种日期格式的转换

在解析埋点数据时会遇到两种不同的日期格式:yyyymmdd和yyyy-mm-dd,此类型之间的转换主要有两种思路:

第一种方法:from_unixtime+unix_timestamp

--20180905转成2018-09-05
select from_unixtime(unix_timestamp('20180905','yyyymmdd'),'yyyy-MM-dd')
from dw.ceshi_data
--结果如下:
2018-09-05
 
--2018-09-05转成20180905
select from_unixtime(unix_timestamp('2018-09-05','yyyy-mm-dd'),'yyyyMMdd')
from dw.ceshi_data
--结果如下:
20180905

第二种方法:substr + concat

--20180905转成2018-09-05 
select concat(substr('20180905',1,4),'-',substr('20180905',5,2),'-',substr('20180905',7,2)) from dw.ceshi_data
结果如下:
2018-09-05 
 
--2018-09-05转成20180905
select concat(substr('2018-09-05',1,4),substr('2018-09-05',6,2),substr('2018-09-05',9,2)) from dw.ceshi_data
结果如下:
20180905
 

下面主要讲解from_unixtime和unix_timestamp两种函数:

from_unixtime:时间戳转日期函数

用法:from_unixtime(bigint unixtime[, stringformat])

返回值: string

说明: 转化时间戳到当前时区的时间格式

 select from_unixtime(1423306743,'yyyyMMdd') 
  from dw.ceshi_data;
结果如下:
20150207

unix_timestamp:日期转时间戳函数

用法:unix_timestamp(string date)

返回值:   bigint

说明: 转换格式为“yyyy-MM-dd HH:mm:ss“的日期到UNIX时间戳。如果转化失败,则返回0。

 select unix_timestamp('2018-09-05 12:01:03') 
  from dw.ceshi_data;
结果如下:
1536120063
 
--获取当前日期的时间戳:
select unix_timestamp() 
  from dw.ceshi_data;
结果如下:
1536126324

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值