相关文章推荐
想旅行的梨子  ·  javascript - js ...·  2 月前    · 
愤怒的伤疤  ·  django设置模板时间格式·  1 月前    · 
英俊的紫菜  ·  MySQL :: MySQL 8.4 ...·  1 月前    · 
玉树临风的汤圆  ·  Windows Docker ...·  1 年前    · 
侠义非凡的毛衣  ·  spring - ...·  2 年前    · 
失眠的鞭炮  ·  Add a png image to a ...·  2 年前    · 
MySQL之TIMESTAMP相关函数

MySQL之TIMESTAMP相关函数

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()函数,该函数支持毫秒级别的时间错,但需要指定当前时区。

发布于 2020-12-30 19:49