与ISO 8601使用Oracle比较SYSDATE

问题描述 投票:0回答:1

问题是,目前我正在试图解决是选择日期时间值(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分钟不再与时间过滤。

希望可以有人帮帮我。提前致谢。

mysql oracle timestamp sysdate
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.