如何在 Presto SQL 中将 bigint 转换为时间戳?

问题描述 投票:0回答:2

如何将 bigint 转换为日期和时间格式,我有两列,一列是“状态更改日期”,另一列是“状态更改时间”。我必须合并两列并以时间戳格式显示。请在这里提出解决方案。预先感谢。

我尝试使用 Unixtime 但没有成功。

sql presto trino
2个回答
0
投票

我尝试使用 Unixtime 但没有成功。

因为您的数据看起来不像Unix时间,它看起来像是出于某种原因存储在bigint中的格式化日期时间。你可以将其相应地变成

varchar
parse

-- sample data
WITH dataset(state_change_date, state_change_time) as (
    VALUES (20220801, 355),
       (20220801, 2355)
)

-- query
SELECT date_parse(cast(state_change_date as varchar) || lpad(cast(state_change_time as varchar), 4 , '0'), '%Y%m%d%k%i')
FROM dataset

输出:

_col0
2022-08-01 03:55:00.000
2022-08-01 23:55:00.000

0
投票

看到你的问题标签Presto,但似乎你正在使用Trino(fmr.PrestoSQL)。只是想澄清 Trino 是 PrestoDB 的一个分支。 Presto 的主要开发是 PrestoDB,您可以在这里下载并安装最新版本:https://prestodb.io/download.html.

希望这有助于澄清,主要区别是:

  • 只有 PrestoDB 在 Meta、Uber 和字节跳动中得到了可靠且大规模的部署。
  • 只有 PrestoDB 具有 PrestoSQL 中没有的众多创新:多级缓存(RaptorX 项目)可将查询性能提高 10 倍以上、表扫描改进(Aria 项目)、可提高可靠性的分解协调器(Fireball 项目)等等
  • 只有 PrestoDB 由 Linux 基金会托管,这让社区用户相信未来的版本将保持开放。 欢迎加入 [Presto Slack][1] 或使用 [Slack 直接注册链接][2]
© www.soinside.com 2019 - 2024. All rights reserved.