gpt4 book ai didi

sql - Postgres - 如何仅用几分钟和几秒钟将 varchar 转换为时间?

转载 作者:行者123 更新时间:2023-11-29 11:45:20 34 4
gpt4 key购买 nike

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

select column_time::time

date/time field value out of range: "29:51"

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

编辑:发现它有效,但它有前导 00 的几个小时,我认为以前不存在。

TO_TIMESTAMP(column_time, 'MI:SS')::time

最佳答案

强制转换和函数调用 to_timestamp() 之间存在细微差别 - 即使在两者都有效的情况下也是如此。

Per documentation:

to_timestamp and to_date exist to handle input formats that cannot be converted by simple casting. These functions interpret input liberally, with minimal error checking. While they produce valid output, the conversion can yield unexpected results. For example, input to these functions is not restricted by normal ranges, thus to_date('20096040','YYYYMMDD') returns 2014-01-17 rather than causing an error. Casting does not have this behavior.

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

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/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com