我有一列包含 MI:SS 格式的数据。我需要将其转换为 TIME 数据类型,但是在尝试转换为 TIME 时出现以下错误:

select column_time::time



它似乎期待 HH:MI 的格式,因此 29 超出范围并导致问题。我该如何解决这个问题?

编辑:发现这个有效,但它在几个小时内领先 00,我认为以前不存在。
TO_TIMESTAMP(column_time, 'MI:SS')::time

最佳答案

强制转换和函数调用 to_timestamp() 之间存在细微差别 - 即使在任何一种情况下都可以工作。

Per documentation:



一个或另一个可能是您需要的。
这有效:

SELECT to_timestamp('129:51', 'MI:SS')::time AS col_overtime

02:09:51

但这不会:
SELECT cast('00:' || '129:51' AS time) AS col_overtime

当简单地转换 '29:51'::time 时,最小格式被认为是 HH24:MI ,而不是 MI:SS

SQL Fiddle.

关于sql - Postgres - 如何在几分钟和几秒钟内将 varchar 转换为时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26813621/

10-12 04:01