在SQL中查找日期或日期范围

时间:2014-11-06 19:46:23

标签: mysql date

我在MySQL中有一个像这样的表:

events      startdate   enddate
festival    2014-07-01  2014-08-14
camping     2014-08-01  2014-08-14
party       2014-09-01  0000-00-00
picnic      2014-09-05  0000-00-00

在某些情况下,只有一个有效列。

因此,如果两列都是有效日期,我需要这样的查询:

SELECT * FROM events WHERE startdate <= '2014-08-05' AND enddate >= '2014-08-05'

如果第二列为零,我需要这样的查询:

SELECT * FROM events WHERE startdate = '2014-08-05'

但是,是否可以在选择的日期选择所有活动事件,只有一个SQL语句?

1 个答案:

答案 0 :(得分:2)

您可以使用单独的OR条件来测试每个日期列的发布日期:

SELECT * 
FROM events 
WHERE 
    (startDate <= '2014-08-05' AND endDate >= '2014-08-05') OR 
    (startDate ='2014-08-05' AND endDate = '0000-00-00') OR
    (endDate = '2014-08-05' AND startDate = '0000-00-00')