unix 您所在的位置:网站首页 hive类型转换函数 unix

unix

2023-04-03 11:55| 来源: 网络整理| 查看: 265

⼀、unix_timestamp函数⽤法 

1、unix_timestamp() 得到当前时间戳 

2、如果参数date满⾜yyyy-MM-dd HH:mm:ss形式,则可以直接unix_timestamp(string date) 得到参数对应的时间戳 

3、如果参数date不满⾜yyyy-MM-dd HH:mm:ss形式,则我们需要指定date的形式,在进⾏转换 

select unix_timestamp('2009-03-20')   --1237507200

select unix_timestamp('2009-03-20 00:00:00', 'yyyy-MM-dd HH:mm:ss') --1237507200

select unix_timestamp('2009-03-20 00:00:01', 'yyyy-MM-dd HH:mm:ss') --1237507201

 

⼆、from_unixtime函数⽤法 

语法:from_unixtime(t1,’yyyy-MM-dd HH:mm:ss’) 

其中t1是10位的时间戳值,即1970-1-1⾄今的秒,⽽13位的所谓毫秒的是不可以的。 

对于13位时间戳,需要截取,然后转换成bigint类型,因为from_unixtime类第⼀个参数只接受bigint类型。例如: 

select from_unixtime(1237507201,'yyyy-MM-dd HH:mm:ss') -- 2009-03-20 00:00:01

select from_unixtime(1237507200,'yyyy-MM-dd HH:mm:ss') -- 2009-03-20 00:00:00

常⽤的插⼊时间为当前系统时间

 

转换成距离

1970

的时间戳,再转换成当前时间

select FROM_UNIXTIME(UNIX_TIMESTAMP() ,'yyyy-MM-dd HH:mm:ss') AS W_INSERT_DT

总结

1.Hive中获取时间戳的⽅式为unix_timestamp()函数,该函数只能够精确到秒级别的时间,对于时间精确到要求⾼的应⽤则该函数并不适

合。

2.Hive获取当前时间毫秒级别的时间戳时需要使⽤cast函数将current_timestamp()转为double类型并乘以1000,则得到毫秒级别的时

间戳。

3.对于Hive库中存储的毫秒精度的时间戳,为了确保时间精度不损失则需要使⽤to_utc_timestamp()函数,该函数⽀持毫秒级别的时间

错,但需要指定当前时区。

三  LAST_DAY 函数的⽤法

last_day ⽤impala不可以,⽤hive可以,获取本⽉⽉末

SELECT LAST_DAY(CONCAT('${START_DATE}','-01'))  

--

传⼊

2019-02  

得到

 2019-02-28

--

传⼊

2019-02-01  

得到

 2019-02-28

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有