【发布时间】:2014-02-26 21:27:42
【问题描述】:
我必须检查特定时间是否介于两次(开市和闭市时间)之间。
打开和关闭时间在数据库中保存为与工作日 ID 相关的“开始”和“结束”时间,而不是与日期相关的时间。
所以我的问题是,我有两种不同的情况,第一种情况是结束时间大于开始时间,例如 end=19:00:00 和 start=09:00:00
但也可以是 end=06:00:00 和 start=20:00:00
那么检查时间是否在两个时间之间的性能方法是什么?
我的 sql 是这样的:
SELECT *
FROM opening
WHERE weekday_id = :weekday
AND start <= :time
AND end >= :time
【问题讨论】:
-
WHERE在哪里? :) 尝试 SELECT * FROM opening WHERE weekday_id = :weekday AND (start = :time) OR (start >= :time AND end -
对不起,我把原来的sql语句改到最小了,为什么会出现这个错误
-
什么是开始和结束文件类型?
-
那么,问题是,有没有可能比
WHERE (start < end AND (:time < end AND :time >= start)) OR (start > end AND (:time >= start OR :time < end))写得更有效率?