我有一个包含一些时间存在的表,如下所示:
presences (id, account_id, start, end, date);
这里有一些条目:
1, 1, 10:00:00, 11:00:00, 2013-07-02
2, 2, 10:05:00, 11:05:00, 2013-07-02
3, 3, 9:55:00, 11:10:00, 2013-07-02
4, 4, 10:02:00, 10:58:00, 2013-07-02
5, 1, 14:00:00, 15:30:00, 2013-07-02
6, 2, 14:03:00, 15:36:00, 2013-07-02
7, 3, 13:56:00, 15:28:00, 2013-07-02
8, 4, 14:05:00, 15:30:00, 2013-07-02
如您所见,帐户的start
时间end
大约为10-11/14-15h,但并不总是完全相同,因此我无法搜索WHERE start = 14:00:00 AND end = 15:30:00
示例。
对于查询,我有单行的日期和值(id:1),我喜欢 MySQL 返回所有具有相同日期的存在,不是 {id}并且具有相同的开始和结束时间范围
到目前为止,我有这个实现,但我正在寻找一种更好的方法(如果存在)来匹配结果:
我得到了start + (end - start / 2)
(对于 id:1,这意味着 10:30:00)的中间时间,我像这样搜索:
SELECT *
FROM presences
WHERE id != 1
AND start < 10:30:00 AND end > 10:30:00
AND date = 2013-07-02
id
和date
是从查询 ( SELECT * FROM presences WHERE id = 1
) 中找到的值,并且start
和end
的计算方法如前所述。
有没有更好的方法来找到相似的时间?