将秒(字符串)转换为 Impala 中的时间戳
Convert seconds (string) to timestamp in Impala
我有 2 列:end_time
和 seconds
end_time
存储为 unix_timestamp,秒数存储为字符串。我需要从 seconds
列中减去 end_time
列以获得新列(即 start_time
)
我很难解决这个问题,因为我认为 Impala 不支持 CONVERT()
或 DATEADD()
让我将 seconds
转换为时间戳,然后从 end_time
中减去它。关于如何在 Impala?
中执行此操作的任何建议
示例:
end_time seconds
2020-09-02 21:12:34 65
期望的结果:
start_time
2020-09-02 21:11:29
编辑
到目前为止的进展:
CAST(CONCAT(CAST(from_timestamp(CAST(end_time AS TIMESTAMP),'yyyy-MM-dd') AS STRING), ' ', CAST(to_timestamp(from_timestamp(CAST(seconds AS TIMESTAMP),'HH:mm:ss'),'HH:mm:ss') AS STRING)) as TIMESTAMP) AS updated_time
上面以 TIMESTAMP
格式给出了秒列,其中包含 end_time
.
的 yyyy-MM-dd
现在如何减去 end_time
和 updated_time
而不会弄乱日期?
例如我不想从 2021-01-01 中减去 2021-01-01。我希望时差来自 HH:mm:ss,而不是 yyyy-MM-dd
实际上最终是一个快速简单的解决方案:
to_timestamp(end_time, 'yyyy-MM-dd HH:mm:ss') end_time
CAST(table.seconds AS INT) sec
date_sub(end_time, INTERVAL sec seconds) start_time
我有 2 列:end_time
和 seconds
end_time
存储为 unix_timestamp,秒数存储为字符串。我需要从 seconds
列中减去 end_time
列以获得新列(即 start_time
)
我很难解决这个问题,因为我认为 Impala 不支持 CONVERT()
或 DATEADD()
让我将 seconds
转换为时间戳,然后从 end_time
中减去它。关于如何在 Impala?
示例:
end_time seconds
2020-09-02 21:12:34 65
期望的结果:
start_time
2020-09-02 21:11:29
编辑 到目前为止的进展:
CAST(CONCAT(CAST(from_timestamp(CAST(end_time AS TIMESTAMP),'yyyy-MM-dd') AS STRING), ' ', CAST(to_timestamp(from_timestamp(CAST(seconds AS TIMESTAMP),'HH:mm:ss'),'HH:mm:ss') AS STRING)) as TIMESTAMP) AS updated_time
上面以 TIMESTAMP
格式给出了秒列,其中包含 end_time
.
现在如何减去 end_time
和 updated_time
而不会弄乱日期?
例如我不想从 2021-01-01 中减去 2021-01-01。我希望时差来自 HH:mm:ss,而不是 yyyy-MM-dd
实际上最终是一个快速简单的解决方案:
to_timestamp(end_time, 'yyyy-MM-dd HH:mm:ss') end_time
CAST(table.seconds AS INT) sec
date_sub(end_time, INTERVAL sec seconds) start_time