2016-11-16 155 views
0

對於MySQL,我需要查找其中兩個值位於兩列之間的行。SQL其中兩個時間列之間的兩個時間值

例如,我正在創建從'15:00'到'18:00'的時間表,但查詢必須驗證任何行是否有句號正在使用。如果有'14:00'到'18:30'的記錄,我需要將其返回到驗證狀態。

我想是這樣,但不工作:

select * from availabilities where (('15:00' or '18:00') between start_hour and end_hour) 

任何想法?

+0

http://wiki.c2.com/?TestIfDateRangesOverlap – shawnt00

回答

1

這基本上是一個「測試範圍是否與另一個範圍重疊」的問題。只要下面的查詢應該工作的起始時間小於結束時間:

SELECT * 
FROM availabilities 
WHERE '18:00' > start_hour AND end_hour > '15:00' 
0

可以使用TIME()函數抽取DATATIME /時間戳列

如部分時間。

SELECT * FROM Table 
WHERE TIME('timeStampCol') BETWEEN '12:00:00' AND '18:00:00' 
+0

http://stackoverflow.com/questions/6973844/select-records逐時間在間隔之間-120000和 - 180000-上每一天 – Ripon