我正在比较两个不同的数据库引擎之间的时间戳列,我需要检索存储在中的时间戳列 YYY-MM-DD HH:mm:ss 格式化为 YYY-MM-DD HH:mm:ss.SSS, 与 SSS 存在 000 当没有入口的时候。我可以使用配置单元选择查询执行上述操作吗?
YYY-MM-DD HH:mm:ss
YYY-MM-DD HH:mm:ss.SSS,
SSS
000
qqrboqgw1#
鉴于这两种格式(及其长度)都是严格定义的,您可以使用以下简单逻辑:
left(concat(ts,'.000'),19)
不能检查确切的语法,但基本上你附加了额外的零,如果你不需要的话就把它们切掉。
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
2条答案
按热度按时间qqrboqgw1#
鉴于这两种格式(及其长度)都是严格定义的,您可以使用以下简单逻辑:
不能检查确切的语法,但基本上你附加了额外的零,如果你不需要的话就把它们切掉。
shyt4zoc2#
拆分时间戳以获得毫秒部分,如果没有毫秒部分或毫秒部分小于3位,则使用rpad添加零。
演示:
结果: