Sql 是否在自定义类型中筛选日期?

Sql 是否在自定义类型中筛选日期?,sql,oracle,Sql,Oracle,我们的oracle数据库中有一个自定义类型,我们称之为stamp: CREATE TYPE stamp AS OBJECT( timestamp DATE, count INTEGER ) 我正在努力选择stamp.timestamp在特定日期之间的位置,但我在oracle文档中找不到该用例 我以为“只使用点符号”,但没用。我确实解决了这个问题,因为我发现在这个特定情况下需要使用别名,所以这是我的当前状态(列名为“when”): 除了现在它说的不支持的列类型,这并没有多大帮助,因为表中

我们的oracle数据库中有一个自定义类型,我们称之为stamp:

CREATE TYPE stamp AS OBJECT(
  timestamp DATE,
  count INTEGER
)
我正在努力选择stamp.timestamp在特定日期之间的位置,但我在oracle文档中找不到该用例

我以为“只使用点符号”,但没用。我确实解决了这个问题,因为我发现在这个特定情况下需要使用别名,所以这是我的当前状态(列名为“when”):

除了现在它说的
不支持的列类型
,这并没有多大帮助,因为表中的列和条目都已经存在

知道如何选择嵌套日期吗?

您可以使用
(when)
扩展您的类型:

选择*
从测试
其中(时间)。时间戳在日期'2020-02-10'之间
日期为'2020-03-10';
而且我不会使用保留/特殊单词作为列/属性名

完整示例:

CREATE TYPE stamp AS OBJECT(
  timestamp_ DATE,
  count_ INTEGER
);
create table test (
  id int,
  when_ stamp
);
begin
  insert into test(id,when_) values(1, stamp(date'2020-01-01', 10));
  insert into test(id,when_) values(2, stamp(date'2020-02-01', 20));
  insert into test(id,when_) values(3, stamp(date'2020-03-01', 30));
  insert into test(id,when_) values(4, stamp(date'2020-04-01', 40));
  commit;
end;
/
select * from test where (when_).timestamp_ between date'2020-02-10' and date'2020-03-10';
您可以使用
(when)
扩展您的类型:

选择*
从测试
其中(时间)。时间戳在日期'2020-02-10'之间
日期为'2020-03-10';
而且我不会使用保留/特殊单词作为列/属性名

完整示例:

CREATE TYPE stamp AS OBJECT(
  timestamp_ DATE,
  count_ INTEGER
);
create table test (
  id int,
  when_ stamp
);
begin
  insert into test(id,when_) values(1, stamp(date'2020-01-01', 10));
  insert into test(id,when_) values(2, stamp(date'2020-02-01', 20));
  insert into test(id,when_) values(3, stamp(date'2020-03-01', 30));
  insert into test(id,when_) values(4, stamp(date'2020-04-01', 40));
  commit;
end;
/
select * from test where (when_).timestamp_ between date'2020-02-10' and date'2020-03-10';

哇,非常感谢,这真的很有帮助。我几乎解决了这个问题。oracle不喜欢将
select*
与此结合使用。您的fiddle非常适合于将所有内容与我的代码进行比较:)
select*
也很好,但是DBFiddle并不正确支持它,但是您可以在任何标准客户端中使用它,例如sqlplus:Wow非常感谢,这真的很有帮助。我几乎解决了这个问题。oracle不喜欢将
select*
与此结合使用。您的fiddle非常适合将所有内容与我的代码进行比较:)
select*
也可以正常工作,但DBFiddle不正确支持它,但您可以在任何标准客户端中使用它,例如sqlplus: