问题是,目前我正在试图解决是选择日期时间值(ISO 8601),并与SYSDATE和时间比较,和SYSDATE /时间必须是在过去的20分钟。
我一直在使用TO_TIMESTAMP
试了又试到SYSDATE
转换,但问题一直返回。
select * from table
where timestamp_from_the_table > to_date(systimestamp, 'YYYY-MM-DD"T"hh24:mi:ss.ff3TZR') -INTERVAL '30' MINUTE
我想结果是有从表中的时间戳列表,但只从过去的20分钟不再与时间过滤。
希望可以有人帮帮我。提前致谢。
决不日期值存储为字符串,即VARCHAR2
!
你的情况,你可以运行
WHERE TO_TIMESTAMP_TZ(timestamp_from_the_table, 'YYYY-MM-DD"T"hh24:mi:ss.ff3TZR')
> systimestamp - INTERVAL '30' MINUTE
这可能是创建一个虚拟列一个选项,即
ALTER TABLE your_table ADD (real_timestamp TIMESTAMP(3) WITH TIME ZONE (TO_TIMESTAMP_TZ(timestamp_from_the_table, 'YYYY-MM-DD"T"hh24:mi:ss.ff3TZR') ));
然后,你可以简单地运行
WHERE real_timestamp > systimestamp - INTERVAL '30' MINUTE