Mysql WHERE子句以获取可以跨越新一天的事件

Mysql WHERE子句以获取可以跨越新一天的事件,mysql,date,Mysql,Date,我有代表事件的数据。重要的栏目是 StartDate (date) StartTime (time) EndDate (date) EndTime (time) 我的where子句是 WHERE HOUR(L.StartTime) <= 14 AND HOUR(L.EndTime) > 14 AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate AND L.StartDate <= '2015-

我有代表事件的数据。重要的栏目是

StartDate (date)
StartTime (time)
EndDate (date)
EndTime (time)
我的where子句是

WHERE HOUR(L.StartTime) <= 14 AND HOUR(L.EndTime) > 14 
AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate 
AND L.StartDate <= '2015-01-22' AND L.EndDate >= '2015-01-22'
这意味着活动从下午2点到第二天凌晨1点开始。我的查询将不会返回该行,因为

AND HOUR(L.EndTime) > 14 

子句。

为什么不是or?原始搜索或声明的可能性:

WHERE (HOUR(L.StartTime) <= 14 AND HOUR(L.EndTime) > 14 
AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate 
AND L.StartDate <= '2015-01-22' AND L.EndDate >= '2015-01-22')
OR (HOUR(L.StartTime) <= 14
AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate
AND L.StartDate <= '2015-01-22' AND L.EndDate >= '2015-01-22'
AND L.StartDate != L.EndDate)
WHERE(小时(L.StartTime)14
和日期(现在())>=L.StartDate和日期(现在())
WHERE (HOUR(L.StartTime) <= 14 AND HOUR(L.EndTime) > 14 
AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate 
AND L.StartDate <= '2015-01-22' AND L.EndDate >= '2015-01-22')
OR (HOUR(L.StartTime) <= 14
AND DATE(NOW()) >= L.StartDate AND DATE(NOW()) <= L.EndDate
AND L.StartDate <= '2015-01-22' AND L.EndDate >= '2015-01-22'
AND L.StartDate != L.EndDate)