我有一列包含 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/