【发布时间】:2021-12-26 10:57:48
【问题描述】:
我在 hive 中创建了一个表,其中一列作为时间戳数据类型。当我插入蜂巢时,与现有的不同。
我的专栏预期值:2021-11-03 16:57:10.842 UTC(我得到的是字符串)。我如何将上述输出存储在配置单元表中(数据类型为时间戳的列)
【问题讨论】:
-
您能否用现有的输入和所需的输出展示您的代码?
标签: apache-spark hive apache-spark-sql
我在 hive 中创建了一个表,其中一列作为时间戳数据类型。当我插入蜂巢时,与现有的不同。
我的专栏预期值:2021-11-03 16:57:10.842 UTC(我得到的是字符串)。我如何将上述输出存储在配置单元表中(数据类型为时间戳的列)
【问题讨论】:
标签: apache-spark hive apache-spark-sql
您需要在删除单词 UTC 后使用 cast 将其转换为时间戳。由于 hive 不有意关心时区,并以 UTC 显示数据,因此您应该处于良好状态。
select cast( substr('2021-11-03 16:57:10.84 UTC',1,23) as timestamp) as ts
请注意,您需要有上述 yyyy-MM-dd hh:mm:ss.SS 格式的数据。
另请注意,您不能使用from_unixtime(unix_timestamp(string_col , 'dd-MM-yyyy HH:mm:ss.SSS')),因为我们会丢失毫秒部分。
【讨论】:
floor(STG.SUSPENSION_START_TS % 1000) 时,它将始终返回 0 毫秒。