gpt4 book ai didi

mysql - WHERE 子句获取(可能)跨越新一天的事件

转载 作者:行者123 更新时间:2023-11-30 22:51:13 25 4
gpt4 key购买 nike

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

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 点之前或下午 2 点开始并且在下午 3 点或更晚结束的任何事件。 StartDate 和 EndDate 是这个事件的范围,例如一个事件可能在一月或更长时间的每一天发生。

现在的问题是如果其中一个事件有这样的数据怎么办:

StartDate    |    StartTime    |    EndDate    |    EndTime
2015-01-01 | 14:00:00 | 2015-12-31 | 01:00:00

意思是事件从下午 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)

关于mysql - WHERE 子句获取(可能)跨越新一天的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com