Maj*_*jor 5 sql postgresql time casting
我有一个列,其中的数据格式为MI:SS. 我需要将其转换为TIME数据类型,但是当尝试转换为数据类型时TIME,出现以下错误:
select column_time::time
Run Code Online (Sandbox Code Playgroud)
日期/时间字段值超出范围:“29:51”
它似乎需要 HH:MI 的格式,因此 29 超出了范围并导致了问题。我该如何解决这个问题?
编辑:发现这个有效,但它有几个小时的前导 00,我认为以前不存在。
TO_TIMESTAMP(column_time, 'MI:SS')::time
Run Code Online (Sandbox Code Playgroud)
强制转换和函数调用之间存在细微的差别to_timestamp()——即使在两者都可以工作的情况下也是如此。手册:
to_timestamp并to_date用于处理无法通过简单转换进行转换的输入格式。对于大多数标准日期/时间格式,只需将源字符串转换为所需的数据类型即可,而且要容易得多。[...]
其中之一可能就是您所需要的。
这有效:
SELECT to_timestamp('129:51', 'MI:SS')::time AS col_overtime
02:09:51
Run Code Online (Sandbox Code Playgroud)
但这并不:
SELECT cast('00:' || '129:51' AS time) AS col_overtime
Run Code Online (Sandbox Code Playgroud)
当简单地转换'29:51'::time最小格式时,被认为是HH24:MI,而不是MI:SS。
SQL 小提琴。(目前已死亡)
| 归档时间: |
|
| 查看次数: |
15567 次 |
| 最近记录: |