超全!!hive时间戳函数unix_timestamp,from_unixtime

本文详细介绍了数据库中时间戳的两种形式及其转换方法,包括10位和13位时间戳的含义,如何使用Hive的unix_timestamp和from_unixtime函数进行时间戳与日期之间的相互转换。

时间戳是数据库常用的存放日期的形式之一,表示从 UTC 时间’1970-01-01 00:00:00’开始到现在的秒数,与常规时间格式如 ‘2020-09-01 00:00:00’可以相互转换。时间戳分为10位的时间戳和13位的时间戳,10位就是存放的秒数,13位就是存放的毫秒数。
(1)unix_timestamp

a. 语法:unix_timestamp()
   返回值:返回当前时间戳
   举例:hive>select unix_timestamp();
         >1598951117
         
b. 语法:unix_timestamp(string data)
   返回值:返回data对应的时间戳,data的格式必须为yyyy-MM-dd HH:mm:ss
   举例:hive>select unix_timestamp('2020-09-01 09:00:00');
         >1598922000

c. 语法:unix_timestamp(string date, string format)
   返回值:返回data对应的时间戳,date 格式由 format 指定。

(2)from_unixtime

语法:from_unixtime(int/bigint timestamp)
返回值:返回timestamp对应的日期,格式为yyyy-MM-dd HH:mm:ss
 举例:hive>select from_unixtime(1598951117);
         >2020-09-01 17:05:17

对于13位的时间戳,转换前需要除以1000

举例:hive>select from_unixtime(cast(1598951117034/1000 as bigint),'yyyy-MM-dd HH:mm:ss')
         >2020-09-01 17:05:17
举例:hive>select from_unixtime(ceil(1598951117034/1000),'yyyy-MM-dd HH:mm:ss')
         >2020-09-01 17:05:17
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值