我正在创建一个显示开放时间的小应用程序。
它的工作方式是这样的:我生成日期列表,然后检查数据库是否打开。
该数据库normal
包含:
day_of_week | open | close | since
INT(11) | TIME | TIME | DATE
------------|--------|--------|------------
1 |09:00:00|17:00:00|2013-01-09
2 |08:00:00|18:00:00|2014-01-06
...
截止日期显示了开放时间的开始日期(所以我可以回顾过去并获得正确的时间,以及将来的时间)。
在我的日期列表中,我检查是否since >= $date_in_list
并且仅显示最大值:
SELECT *,MAX(since) FROM normal WHERE day_of_week = '2' AND since <= '2014-06-03'
除非我有2个小时的相同日期(例如中午关闭),否则此方法效果很好。
所以当我有这样的数据时:
day_of_week | open | close | since
------------|--------|--------|------------
2 |09:00:00|12:00:00|2014-01-06
2 |14:00:00|18:00:00|2014-01-06
我想同时获取09:00:00-12:00:00和14:00:00-18:00:00,但是我似乎找不到正确的查询。
如何使用子查询?这些东西
SELECT *
FROM normal
WHERE day_of_week = '2'
AND since = (
SELECT MAX(since)
FROM normal
WHERE day_of_week = '2'
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句