Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 错误:数据类型tstzrange[]没有Postgres 10中访问方法“gist”的默认运算符类_Postgresql_Indexing_Timestamp With Timezone - Fatal编程技术网

Postgresql 错误:数据类型tstzrange[]没有Postgres 10中访问方法“gist”的默认运算符类

Postgresql 错误:数据类型tstzrange[]没有Postgres 10中访问方法“gist”的默认运算符类,postgresql,indexing,timestamp-with-timezone,Postgresql,Indexing,Timestamp With Timezone,我正在尝试为PostgreSQL 10中的tstzrange[]列设置索引。我通过pgAdmin 4 GUI创建了该列,将其名称和数据类型设置为tstzrange[],并将其设置为NOTNULL,仅此而已 然后我创建了一个扩展btree_gist;对于数据库,它起了作用 然后,我在中看到,我应该为范围编制索引,我做了: CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range); …但我得到: 错误:数据类型tstzran

我正在尝试为PostgreSQL 10中的tstzrange[]列设置索引。我通过pgAdmin 4 GUI创建了该列,将其名称和数据类型设置为tstzrange[],并将其设置为NOTNULL,仅此而已

然后我创建了一个扩展btree_gist;对于数据库,它起了作用

然后,我在中看到,我应该为范围编制索引,我做了:

CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range);
…但我得到:

错误:数据类型tstzrange[]没有默认的运算符类 存取方法要点

坦白说,我不知道这到底意味着什么,也不知道如何解决它。我该怎么办

PS,该列当前为空,还没有数据

Ps2,该表描述了按时间顺序排列的时代,有一个id、时代名称(如60年代)和时区范围(如1960-1969年)。
日期由用户插入,我想检查它属于哪个年代。

好的,您有一个时间戳范围数组作为单个列。可以使用GIN索引索引数组,使用iirc GIN或GiST索引范围。但是,我不确定同时包含这两个属性的列上的索引将如何运行。我想你可以把它建模成一个N维的r-树或者类似的东西


我假设您要检查重叠的范围。您能正常化数据并在每行中有一个范围的链接表吗?

如果您只想存储一个范围,那么为什么要使用范围数组?但我不想只存储一个范围。有多个脉络学时代。检查我刚才添加的问题的Ps2部分。谢谢。是的,上面说的是时区范围-这只是一个单一的时间范围me@a_horse_with_no_name好的,Postgresql有两种范围类型。tstzrange[]和tstzrange,第二个没有括号。我应该用第二个吗?有什么区别?感谢这不是两种类型。第一个是范围的=列表,第二个是包含从-到的两个时间戳的单个范围,例如从1960-09-03 18:45:01到1969-03-09 14:38:12,但这是单个范围值。但是,如果您只想存储1960-1969年,那么您可能需要int4rangeHi Richard。对不起,我不明白你到底建议我做什么,我是一个新手,可以发布它的索引和范围。至于我想做什么,请检查我刚才添加到问题中的Ps2部分。谢谢。是的,我现在知道了,我用的是数组而不是时间戳。所以它不能被索引,因为它是一个时间戳数组?