我的问题类似于https://stackoverflow.com/a/41267928/2585154,但在我的情况下,我需要将日期范围除以多个日期范围,而不仅仅是一个。
在我的情况下,还保证“要分割的日期范围”不会相互重叠。
示例 1:
拆分日期范围:2021-01-01 2021-12-31
要除以 (1) 的日期范围:
- 2021-03-01 2021-06-02
我想得到以下输出:
- 2021-01-01 2021-02-28
- 2021-06-03 2021-12-31
示例 2:
拆分日期范围:2021-01-01 2021-12-31
要除以 (2) 的日期范围:
- 2021-03-01 2021-06-02
- 2021-07-01 2021-12-30
我想得到以下输出:
- 2021-01-01 2021-02-28
- 2021-06-03 2021-06-30
- 2021-12-31 2021-12-31
Postgres 14中新的多范围数据类型正是您所需要的。多范围运算符允许拆分日期范围。
Postgres 14 的发行说明:
示例 1:
示例 2:
db<>在这里摆弄
我在示例中使用了多范围文字(常量)。
关于如何构建多范围的手册。
请注意,
[2021-01-01,2022-01-01)
and[2021-01-01,2021-12-31]
是相同日期范围的两个等效语法变体。第一个变体是规范形式。手册: