ss中的时间戳转换为YYY

ss中的时间戳转换为YYY

本文介绍了在执行选择查询时,如何在Hive中将YYY-MM-DD HH:mm:ss中的时间戳转换为YYY-MM-DD HH:mm:ss.SSS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在比较2个不同数据库引擎之间的时间戳列,我需要将以 YYY-MM-DD HH:mm:ss 格式存储的时间戳列恢复为 YYY-MM-DD HH:mm:ss.SSS ,如果没有条目,则 SSS 000 .

I am comparing timestamp columns between 2 different database engines and I need to retrieve the time stamp column stored in YYY-MM-DD HH:mm:ss format to YYY-MM-DD HH:mm:ss.SSS, with SSS being 000 when no entry is there.

我可以使用Hive select查询执行上述操作吗?

Can I do the above using Hive select query?

推荐答案

拆分时间戳以获取毫秒部分,如果根本没有毫秒部分或毫秒部分少于3位,请使用rpad添加零.

Split the timestamp to get milliseconds part, use rpad to add zeroes if there is no millisecond part at all or milliseconds part is less that 3 digits.

演示:

 with your_data as (
    select stack(3, '2019-11-02 20:18:00.123',
                    '2019-11-02 20:18:00.12',
                    '2019-11-02 20:18:00'
                ) as ts
    )

 select concat(split(ts,'\\.')[0],'.',rpad(nvl(split(ts,'\\.')[1],''),3,0))
   from your_data d
 ;

结果:

2019-11-02 20:18:00.123
2019-11-02 20:18:00.120
2019-11-02 20:18:00.000

这篇关于在执行选择查询时,如何在Hive中将YYY-MM-DD HH:mm:ss中的时间戳转换为YYY-MM-DD HH:mm:ss.SSS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-26 10:53