我有一個帶有日期列 (DD/MM/YYYY hh:mm:ss) 的表,如下所示:
02/09/2021 09:50:37
03/09/2021 09:20:27
02/09/2021 14:05:25
03/09/2021 12:50:28
02/09/2021 14:25:26
按日期過濾的最有效方法是什么?
注意:我試過了
select date
from table
where date = '02/09/2021'
但是,這會提供錯誤地缺少時間并且僅包含日期 02/09/2021 的結果。
例如,不會回傳 02/09/2021 09:50:37。
uj5u.com熱心網友回復:
一個簡單的選擇是
select *
from your_table
where trunc(date_column) = date '2021-09-02'
如果在 上有一個索引date_column,則不會在這種情況下使用它,因此性能可能會受到影響,因此您必須創建基于函式的索引,或使用不同的where子句:
where date_column >= date '2021-09-02' and date_column < date '2021-03-03'
uj5u.com熱心網友回復:
如果您想回傳每個日期列等于某個日期的記錄,而不管時間部分如何,那么您需要這個:
select date
from table
where trunc(date) = '02/09/2021'
請避免命名列日期和表格表。 這是一個小演示
uj5u.com熱心網友回復:
使用日期范圍:
SELECT date_column
FROM table_name
WHERE date_column >= DATE '2021-09-02'
AND date_column < DATE '2021-09-02' INTERVAL '1' DAY;
這將使 Oracle 能夠在date_column列上使用索引。
如果您使用以下過濾器進行過濾:
TRUNC(date_column) = DATE '2021-09-02'要么TO_CHAR(date_column, 'DD-MM-YYYY') = '02-09-2021'
然后 Oracle 將不會在 上使用索引,date_column并且需要在TRUNC(date_column)或上使用單獨的基于函式的索引TO_CHAR(date_column, 'DD-MM-YYYY')。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448744.html
