gpt4 book ai didi

postgresql - Postgres daterange 可以包含无穷大作为上限吗?

转载 作者:行者123 更新时间:2023-11-29 13:10:46 27 4
gpt4 key购买 nike

我看不出如何创建一个以 infinity 作为上限的日期范围。 Postgres 将两个输入都转换为独占上限:

create table dt_overlap (
id serial primary key,
validity daterange not null
);

insert into dt_overlap (validity) values
('["2019-01-01", infinity]'),
('["2019-02-02", infinity)');

table dt_overlap;
id │ validity
────┼───────────────────────
1 │ [2019-01-01,infinity)
2 │ [2019-02-02,infinity)

select id,
upper(validity),
upper_inf(validity),
not isfinite(upper(validity)) as is_inf
from dt_overlap;

id │ upper │ upper_inf │ is_inf
────┼──────────┼───────────┼────────
1 │ infinity │ f │ t
2 │ infinity │ f │ t

这两个值给出相同的结果在某种程度上是意料之中的,因为包容性上限 infinity] 被强制转换为独占性上限 infinity)

范围的下限不存在相同的问题,因为日期范围保持包含下限,因此 lower_inf() 返回 true

使用 Postgresql 9.6.5 和 Postgresql 10.3 进行测试和复制。

有什么想法吗?

最佳答案

另一种创建无限范围的方法是完全忽略上限,例如'["2019-01-01",)'

with dt_overlap (validity) as (
values
('["2019-01-01", infinity]'::daterange),
('["2019-02-01",]'::daterange)
)
select validity,
upper_inf(validity)
from dt_overlap;

结果

validity              | upper_inf
----------------------+----------
[2019-01-01,infinity) | false
[2019-02-01,) | true

关于postgresql - Postgres daterange 可以包含无穷大作为上限吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55042634/

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