2015-01-02 117 views
0

我有一個包含創建日期和結束日期列的表。所有元素都有一個創建日期的值,但不一定是可以爲空的結束日期值。我想通過查詢這些日期來獲取行。我應該如何編寫查詢,以便創建日期和結束日期之間的行與結束日期爲空的數據一起顯示?如何在結束日期爲空的兩個日期之間獲取數據?

+0

我會建議你拿基本的教程,嘗試一下,然後回到這個論壇。 – SMA

回答

0

使用此:

WHERE IF(end_date IS NULL, @date > date_created, @date BETWEEN date_created AND end_date) 
1

一種選擇是使用一個布爾OR運營商。

目前尚不清楚您在謂詞中提供了哪些日期值。本示例使用DATE(NOW())返回當前日期。

SELECT ... 
    FROM mytable t 
WHERE t.date_created <= DATE(NOW()) 
    AND (t.end_date >= DATE(NOW()) OR t.end_date IS NULL) 

還有其他查詢模式將返回等效結果,但它們都將歸結爲相同的事情。 (這是經常使用的另一種方法是替代價值爲NULL值作爲一個例子,如果end_date爲NULL,我們用一個已知值,這將導致布爾TRUE,我們希望:

SELECT ... 
    FROM mytable t 
WHERE t.date_created <= DATE(NOW()) 
    AND IFNULL(t.end_date,DATE(NOW())) >= DATE(NOW()) 
相關問題