timestamp格式_MySQL之TIMESTAMP相关函数

93636ac0e244b325173b484b62161a89.png

TIMESTAMP的值可以是整数,也就是距离Unix新纪元时间(1970年1月1日,午夜12点)的秒数;也可以是浮点数,即距离Unix新纪元时间的秒数,精确到纳秒(小数点后保留9位数);还可以是字符串,即JDBC所约定的时间字符串格式,格式为YYYY-MM-DD hh:mm:ss.fffffffff。

TIMESTAMP表示的是UTC时间,即协调世界时。UTC现在作为世界标准时间使用。

可以用from_utc_timestamp把UTC标准时间切换到北京时间:

-- 假如现在有UTC时间:'1970-01-01 00:00:00',把它转为北京时间,hiveSql如下:

select from_utc_timestamp('1970-01-01 00:00:00','PRC') as bj_time;

>> 1970-01-01 08:00:00.0

注意点:

Hive中使用current_timestamp()函数获取当前时间,精确到 毫秒

select current_timestamp();

>> 2020-12-30 14:33:40.807

Hive中获取当前时间戳,默认使用unix_timestamp()函数,精确到 秒

select unix_timestamp();

>> 1609310174

-- 注意是10位

Hive中将时间戳转换为日期类型,默认使用from_unixtime()

select from_unixtime(0,'yyyy-MM-dd HH:mm:ss');

>> 1970-01-01 08:00:00

第一个参数只能是int类型的时间戳,第二个参数为时间格式的字符串,第二个参数也可以为空,默认时间格式为:yyyy-MM-dd HH:mm:ss

Hive中to_utc_timestamp()函数,将毫秒级别的时间戳转换为指定格式的毫秒时间

select to_utc_timestamp(1559461463324,'GMT');

>> 2019-06-02 15:44:23.324

-- 注意是13位

select date_format(to_utc_timestamp(1559461463324,'GMT'),'yyyyMMddHHmmssSSS');

>> 20190602154423324

select date_format(to_utc_timestamp(1559461463324,'GMT'),'yyyy/MM/dd HH:mm:ss.SSS')

>> 2019/06/02 15:44:23.324

-- Hive中获取时间戳的方式为unix_timestamp()函数,该函数只能够精确到秒级别的时间,对于时间精确到要求高的应用则该函数并不适合。

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

-- 对于Hive库中存储的毫秒精度的时间戳,为了确保时间精度不损失则需要使用to_utc_timestamp()函数,该函数支持毫秒级别的时间错,但需要指定当前时区。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值