如何将 YYY-MM-DD HH:mm:ss 中的时间戳转换为 YYY-MM-DD HH:mm:ss.执行选择查询时在



我正在比较 2 个不同数据库引擎之间的时间戳列,我需要检索以YYY-MM-DD HH:mm:ss格式存储的时间戳列,以便在没有条目时YYY-MM-DD HH:mm:ss.SSS,SSS000

是否可以使用 Hive 选择查询执行上述操作?

拆分时间戳以获得毫秒部分,如果根本没有毫秒部分或毫秒部分少于 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

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

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

无法检查确切的语法,但基本上您可以附加额外的零,如果不需要它们,请将其切断。

最新更新