在 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的主要内容,如果未能解决你的问题,请参考以下文章
在 athena/presto 中将数组(varchar)转换为 varchar