簡體   English   中英

Oracle:相對日期和日期分區表

[英]Oracle: Relative dates and date partitioned table

我在 Oracle 中有一個按DATETIME列的每月分區表。 該表包含 > 60 億行。 現在我想使用sysdate過濾這個表。 因此,我可以使用相對日期來編寫查詢,例如昨天、上個工作日、去年等......

所以,我尋找的是類似於下面的代碼:

SELECT *
FROM BIG_PART_TABLE PARTITION FOR (DATE **TODAY**)
WHERE TRUNC(DATETIMECOLUMN) = TRUNC(SYSDATE)

但顯然,這行不通。

你有什么想法讓我可以讓它工作嗎?

謝謝!

您無法可靠地判斷 Oracle 需要查看哪個分區,因為sysdate是一個易失性函數(即它的值隨時間不是恆定的)。 與其為此編寫復雜的動態代碼,您應該首先相信數據庫會選擇正確的分區。

我將您的查詢表述如下:

select *
from big_part_table partition 
where datetimecolumn >= trunc(sysdate) and datetimecolumn < trunc(sysdate) + 1

where條件在功能上等同於您的原始條件,它為數據庫提供了一個合理的機會來評估應該使用哪個分區。

使用范圍比較:

SELECT *
  FROM BIG_PART_TABLE
  WHERE DATETIMECOLUMN BETWEEN TRUNC(SYSDATE)
                           AND TRUNC(SYSDATE+1)

這是一種在搜索索引日期值時很有用的模式。

暫無
暫無

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

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