我正在比较两个不同数据库引擎之间的时间戳列,我需要将以YYY-MM-DD HH:mm:ss
格式存储的时间戳列恢复为YYY-MM-DD HH:mm:ss.SSS,
,其中SSS
为000
,否则条目在那里。
答案 0 :(得分:1)
将时间戳拆分为毫秒部分,如果根本没有毫秒部分或毫秒部分少于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
答案 1 :(得分:0)
鉴于两种格式(及其长度)均已严格定义,因此可以使用以下简单逻辑:
left(concat(ts,'.000'),19)
无法检查确切的语法,但基本上,您会追加多余的零,并在不需要时将其切除。