unix | 您所在的位置:网站首页 › hive类型转换函数 › unix |
) ⼀、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 实验室设备网 版权所有 |