Hive SQL 将字符串转换为时间戳而不会丢失毫秒

问题描述

我有 2020-10-21 12:49:27.090 形式的字符串数据

我想将其转换为时间戳。当我这样做时: select cast(column_name as timestamp) as column_name from table_name

所有的毫秒都被丢弃了,像这样: 2020-10-21 12:49:27

我也试过这个: select cast(date_format(column_name,'yyyy-MM-dd HH:mm:ss.SSS') as timestamp) as column_name from table_name

同样的问题仍然存在,它减少了毫秒。

如何在不丢失毫秒的情况下将字符串转换为时间戳?

解决方法

在 Qubole 和 demo.gethue.com 上的 Hive 2.3.6 中测试,效果很好:

select cast ('2020-10-21 12:49:27.090' as timestamp),timestamp('2020-10-21 12:49:27.090')

结果:

2020-10-21 12:49:27.09    2020-10-21 12:49:27.09

还有这个

cast(date_format('2020-10-21 12:49:27.090','yyyy-MM-dd HH:mm:ss.SSS') as timestamp)

也一样。

您的客户端应用程序或 Hive 版本似乎有问题