0

首先感谢您阅读我并尝试帮助我。

我开始使用时态数据库,完全使用具有下一个结构的双时态数据库:

CREATE TABLE poblat (
  dni VARCHAR2(9), 
  name VARCHAR(12), 
  tiv DATE,
  tfv DATE,
  tit TIMESTAMP,
  tft TIMESTAMP,
  PRIMARY KEY (dni,tiv, tit)
);

我想知道如何使用 after、before 或 include 之类的子句进行查询。

例如我这样做:

SELECT nombre, tiv, tfv FROM poblat
WHERE (tiv, tfv) INCLUDE (to_date('31/12/2014'), to_date('31/12/2016'));

但是 sql 开发人员说我使用了“无效的关系运算符”。

感谢您的关注和帮助。

4

2 回答 2

0

大概您的 WHERE 子句指定了一个日期范围,并且您正在寻找该范围内的记录。如果是这样:

SELECT nombre, tiv, tfv 
FROM poblat
WHERE tiv > =to_date('31/12/2014')  -- start of date range
and  tfv <= to_date('31/12/2016')  -- end of date range
;
于 2017-11-25T13:06:28.123 回答
0

没有INCLUDEOracle的SQL。根据双时态数据库的文档http://docs.marklogic.com/guide/temporal/searching#id_78584,有两个连续的艾伦运算符似乎符合 include :

aln_equals : x-start = y-start 和 x-end = y-end aln_contains : x-start < y-start 和 x-end > y-end

(其中 X 和 Y 都是句点)可能会导致 Oracle:

SELECT nombre, tiv, tfv FROM poblat WHERE to_date(tiv,'dd/mm/yyyy') >= to_date('31/12/2014','dd/mm/yyyy') and to_date(tif,'dd/mm/yyyy') <= to_date('31/12/2016','dd/mm/yyyy');
于 2017-11-25T10:12:52.587 回答