gpt4 book ai didi

sql - PostgreSQL - 将 JSON 字符串转换为 INTERVAL 返回不正确的值

转载 作者:行者123 更新时间:2023-11-29 14:24:57 25 4
gpt4 key购买 nike

在将 JSON 字符串转换为 INTERVAL 类型时,我在 Postgres 服务器上观察到一个奇怪的行为。我在 Postgres v9、v10、v11 上进行了尝试,每个都得到了相同的结果。

例子:

select '{"minutes": 20, "hours":10}'::interval;

+----------+
| interval |
+----------+
| 20:00:10 |
+----------+
(1 row)

没有错误、警告,什么都没有。 Postgres 不提示但返回不正确的结果。为什么会这样?

另一方面,这些示例返回错误:

select '{}'::interval;

ERROR: invalid input syntax for type interval: "{}"
LINE 1: select '{}'::interval;
^

select '{"blahblah": 10}'::interval;

ERROR: invalid input syntax for type interval: "{"blahblah": 10}"
LINE 1: select '{"blahblah": 10}'::interval;
^

我知道如何缓解这个问题。在这里我只想了解为什么它会这样。

最佳答案

回答我自己的问题。看起来 Postgres 只是通过以下方式简单地解析文本:

{"分钟": 20, "小时":10}

20 后跟小时,所以它变成了20 小时10 后面没有任何内容,所以它变成了 10 秒。最终结果是 20:00:10

另一个例子:选择'{小时 20 !!!!! d 10::: s}'::间隔;

20 后跟 d,变成 20 天10 后跟 s,变成 10 秒。最终结果是 20 天 00:00:10

关于sql - PostgreSQL - 将 JSON 字符串转换为 INTERVAL 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58875543/

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