mm-dd hh:mm:ss中的时间戳转换为yyy-mm-dd hh:mm:ss.sss?

h4cxqtbf  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(432)

我正在比较两个不同的数据库引擎之间的时间戳列,我需要检索存储在中的时间戳列 YYY-MM-DD HH:mm:ss 格式化为 YYY-MM-DD HH:mm:ss.SSS,SSS 存在 000 当没有入口的时候。
我可以使用配置单元选择查询执行上述操作吗?

qqrboqgw

qqrboqgw1#

鉴于这两种格式(及其长度)都是严格定义的,您可以使用以下简单逻辑:

left(concat(ts,'.000'),19)

不能检查确切的语法,但基本上你附加了额外的零,如果你不需要的话就把它们切掉。

shyt4zoc

shyt4zoc2#

拆分时间戳以获得毫秒部分,如果没有毫秒部分或毫秒部分小于3位,则使用rpad添加零。
演示:

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

相关问题