如何在结束日期为空的两个日期之间获取数据?

时间:2015-01-02 06:31:15

标签: mysql sql database

我有一个创建日期和结束日期列的表。所有元素都具有日期创建值,但不一定是结束日期值,可以为null。我想通过查询这些日期来获取行。我应该如何编写查询,以便显示创建日期和结束日期之间的行以及结束日期为空的数据?

2 个答案:

答案 0 :(得分:1)

使用此:

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

答案 1 :(得分: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())