Hive 如何在执行select查询时将YYY-MM-DD HH:MM:ss中的时间戳转换为配置单元中的YYY-MM-DD HH:MM:ss.SSS?

Hive 如何在执行select查询时将YYY-MM-DD HH:MM:ss中的时间戳转换为配置单元中的YYY-MM-DD HH:MM:ss.SSS?,hive,timestamp,hiveql,Hive,Timestamp,Hiveql,我正在比较两个不同的数据库引擎之间的时间戳列,当没有条目时,我需要检索以YYY-MM-DD HH:MM:ss格式存储的时间戳列,以YYY-MM-DD HH:MM:ss.SSS,,其中SSS为000 我可以使用配置单元选择查询执行上述操作吗?拆分时间戳以获得毫秒部分,如果没有毫秒部分或毫秒部分小于3位,则使用rpad添加零 演示: 结果: 2019-11-02 20:18:00.123 2019-11-02 20:18:00.120 2019-11-02 20:18:00.000 鉴于两种格式(

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


我可以使用配置单元选择查询执行上述操作吗?

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

演示:

结果:

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)

无法检查确切的语法,但基本上可以附加额外的零,如果不需要,则将其删除。

如果点后面可能有某些内容,则此功能更强大,但假设它是全部或全部,则更简单的解决方案也应足够。
left(concat(ts,'.000'),19)