2012-01-02 64 views
-3

我是Oracle 11g的新手&我對查詢有疑問。Oracle 11g中的日期比較

我有一個表dummy它有created_date類型的列Date

我想要一個查詢,它將返回所有記錄,其中created_date + 7天小於今天的日期。

Oracle 11g中的哪種查詢可以完成此操作?

+5

我想你很幸運能得到這些好的答案。你至少應該嘗試查詢 - 或者閱讀一些關於sql的內容,因爲這是非常基本的東西。 – Randy 2012-01-03 01:42:28

回答

4

甲骨文讓您使用+的日期計算,所以

where table.created_date >= sysdate 
and table.created_date < sysdate + 7 

會發現正是現在正好和現在加7天行。

如果您不希望包括時間組件,您可以使用trunc()功能

where trunc(table.created_date) >= trunc(sysdate) 
and trunc(table.created_date) < trunc(sysdate) + 7 
+0

謝謝!我可以簡單地使用「where creation_date + 7 = sysdate AND created_date Mike 2012-01-02 23:45:27

+0

如果你只檢查'creation_date + 7 rejj 2012-01-03 00:42:40

4

我覺得rejj的解決方案會給你現在七天在未來的記錄。從你的描述來看,這聽起來像你可能在過去七天內想要這些記錄。我想這樣做,因爲:

WHERE created_date <= SYSDATE 
    AND created_date >= SYSDATE - 7 

這可能是更清晰,相當於:

WHERE created_date BETWEEN SYSDATE AND (SYSDATE - 7) 

注意,使用TRUNC()將導致優化繞過您有任何CREATED_DATE指標,除非你定義了一個功能索引。

0

利用聲波常數可以使日期計算更加清晰,如

SELECT * 
    FROM DUMMY 
    WHERE CREATED_DATE >= TRUNC(SYSDATE) - INTERVAL '7' DAY 

分享和享受。