问题是我当前要解决的问题是选择一个日期时间值(iso 8601)并将其与sysdate和时间进行比较,并且sysdate / time必须是过去的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分钟内的时间。
希望有人可以帮助我。预先感谢。
答案 0 :(得分:0)
永远不要将日期值存储为字符串,即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