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