我有一個包含一些時間派駐一個表,像這樣:如何查找開始和結束幾乎匹配時間的行的列表?
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
發現如前解釋的計算出的值。
有沒有更好的方法找到類似的時間?
感謝您的幫助!
如果以id = 3爲例,您的第二個選項可能不起作用 –