🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 范围类型 **场景** - 用于时间安排的时间和日期范围是最清晰的例子 - 价格范围、一种仪器的量程等等也都有用 **索引** - 可以为范围类型的表列创建 GiST 和 SP-GiST 索引 **语法** ``` int4range — integer的范围 int4multirange — 相应的多重范围 int8range — bigint的范围 int8multirange — 相应的多重范围 numrange — numeric的范围 nummultirange — 相应的多重范围 tsrange — 不带时区的 timestamp的范围 tsmultirange — 相应的多重范围 tstzrange — 带时区的 timestamp的范围 tstzmultirange — 相应的多重范围 daterange — date的范围 datemultirange — 相应的多重范围 ``` **边界** ``` (lower-bound,upper-bound) (lower-bound,upper-bound] [lower-bound,upper-bound) [lower-bound,upper-bound] (lower-bound,) (,) ``` > 中括号表示包含,小括号表示不包含 ## 示例 ### 入门 ``` CREATE TABLE reservation (room int, during tsrange); INSERT INTO reservation VALUES (1108, '[2010-01-01 14:30, 2010-01-01 15:30)'); ``` ### 条件查询 ```sql -- 包含 SELECT int4range(10, 20) @> 3; // f -- 重叠 SELECT numrange(11.1, 22.2) && numrange(20.0, 30.0); //t -- 抽取上界 SELECT upper(int8range(15, 25)); //25 -- 计算交集 SELECT int4range(10, 20) * int4range(15, 25); // [15,20) -- 范围为空吗? SELECT isempty(numrange(1, 5)); //f -- 如何 ```