簡體   English   中英

使用Oracle將sysdate與iso 8601進行比較

[英]Compare sysdate with iso 8601 using oracle

問題是我當前要解決的問題是選擇一個日期時間值(iso 8601),並將其與sysdate和time進行比較,並且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分鍾的時間進行過濾。

希望可以有人幫幫我。 提前致謝。

永遠不要將日期值存儲為字符串,即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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM