在 Presto 中将存储为 INT 的时间转换为 VARCHAR

Posted

技术标签:

【中文标题】在 Presto 中将存储为 INT 的时间转换为 VARCHAR【英文标题】:Converting time stored as INT to VARCHAR in Presto 【发布时间】:2020-07-24 12:05:39 【问题描述】:

我正在将数据从 Presto DB 提取到包含名为 scan_time 的字段的 SQL Server 表中,该字段以 INT 格式存储时间值。这些值显然不是固定长度,所以像1233 这样的东西实际上意味着00:12:33

将其转换为 VARCHAR 的最佳方法是什么,以使值 1223 输出为 00:12:33

【问题讨论】:

你怎么知道 1133 是 00:11:33 或 01:01:33 或 11:00:33? @TanveerBadar 如果它是您的任何替代示例,则会出现尾随零 【参考方案1】:

在 SQL Server 中,您可以使用以下方法转换为时间:

select convert(time, stuff(right(concat('0', scan_time), 4), 3, 0, ':'))

Here 是一个 dbfiddle。

【讨论】:

感谢您的回复 - 这在 presto 中不起作用。也许我必须在 openquery 之外进行转换。 @Cam 。 . .您的问题很清楚,目标数据库是 SQL Server。如果您需要在 Presto 中执行此操作,您能否再问一个问题并说明清楚? 根据您的回答,我决定在 SQL 端进行格式化,这就是我将您的回答标记为已接受的原因。谢谢

以上是关于在 Presto 中将存储为 INT 的时间转换为 VARCHAR的主要内容,如果未能解决你的问题,请参考以下文章

如何在presto中将列转换为数组

在 athena/presto 中将数组(varchar)转换为 varchar

在 Presto SQL 中将整数值转换为日期

在presto MySQL中将时间戳转换为字符串?

如何在 presto 中将 varchar 转换为 MAP(VARCHAR,VARCHAR)

如何在 Presto/Hive 中将日期格式 YYYY-MM-DD 转换为整数 YYYYMMDD?