2015-01-02 118 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()) 
相关问题