我在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语句?
答案 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')