2009-10-19 45 views
0

我想提取從數據庫數據,其中場「結束_日期」小於今天的日期和地方END_DATE不等於空;我會怎麼做?我想第二部分了..我有第一部分的麻煩的Oracle SQL查詢的問題

select * 
from table 
where to_char(end_date) IS NOT null 
+2

您不需要浪費時間將結束日期轉換爲字符串來測試它是否爲空;只需使用「WHERE end_date IS NOT NULL」。 –

回答

7

試試這個

... 
    Where end_ date is not null and 
     And end_date < sysdate 

而且,實際上,我認爲你可能甚至不需要第一部分,彷彿END_DATE爲null ,它肯定不會是今天的日期之後,因此其本身試試這個:

Where end_date < sysdate 

編輯備註:

  1. 這會給你的每個記錄是 具有先於當前 系統日期和時間END_DATE,今天早些時候 包括 那些END_DATE值。如果你想只有那些 end_Dates達和包括 昨天午夜,那麼你需要 與 表達對於昨天午夜結束日期 時間值替換「SYSDATE」 ..

    在哪裏end_date之間< TRUNC(SYSDATE)

  2. SYSDATE是甲骨文特定語法返回當前系統日期和時間。 (在SQL Server中,例如,它的)稱爲GETDATE(的功能。在ANSI標準語法實現此功能,(在Oracle和SQL Server的工作,並應在任何ANSI標準的數據庫工作)是。CURRENT_TIMESTAMP

+1

+1:你不需要「not null」部分(因爲NULL日期不會「小於sysdate」) –

+0

很好的解釋tnx一堆 –

0

要告訴你多一點關於如何使用Oracle中的日期檢查了這一點:

選擇當前日期,並刪除它30分鐘其中check_date被聲明爲時間戳

select current_timestamp + interval '-30' minute into check_date from dual; 

選擇從表中的一切地方END_DATE不爲空及以上現 - 30分鐘

select * from table 
where to_char(end_date) is not null and end_date < check_date; 
0
select * from table where end_date < CURRENT_DATE and end_date IS NOT null 
0

SELECT * FROM表 其中TO_CHAR(END_DATE, 'DD-MM-YYYY')是not null and end_date < sysdate;