sql配置单元字符串到时间戳的毫秒转换

baubqpgj  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(728)

我需要转换所提到的输入字符串格式,并在时间戳中生成所需的输出,如下所示。
输入: 16AUG2001:23:46:32.876086 期望输出: 2001-08-16 23:46:32.876086 通过运行以下代码得到的输出: 2001-08-17 00:01:08 查询:

select '16AUG2001:23:46:32.876086' as row_ins_timestamp,
       from_unixtime(unix_timestamp('16AUG2001:23:46:32.876086',
                     'ddMMMyyyy:HH:mm:ss.SSSSSS')) as row_ins_timestamp
from temp;

部件未按要求转换。请建议。

ybzsozfc

ybzsozfc1#

unix\u timestamp函数不保留毫秒。不使用毫秒转换,然后用毫秒部分串联:

with your_data as (
select stack(3,
'16AUG2001:23:46:32.876086',
'16AUG2001:23:46:32',
'16AUG2001:23:46:32.123'
) as ts
)

select concat_ws('.',from_unixtime(unix_timestamp(split(ts,'\\.')[0],'ddMMMyyyy:HH:mm:ss')),split(ts,'\\.')[1]) 
  from your_data;

结果:

2001-08-16 23:46:32.876086
2001-08-16 23:46:32
2001-08-16 23:46:32.123
Time taken: 0.089 seconds, Fetched: 3 row(s)

相关问题