2016-06-10 73 views
1

我的表我的SQL時間範圍選擇

starttime | endtime | id 

10:30   11:30  1 
11:30   12:30  2 
14:30   16:30  3 
15:30   16:30  4 

我需要找到ID爲例如 給定的時間段說

10:30 to 13:30 should give me o/p 1 2  
11:30 to 16:30 should give o/p 2 3 4 

聲明我使用

select id from table where STR_TO_DATE(starttime,'%h:%i')>='10:30' and STR_TO_DATE(endtime,'%h:%i')<='22:30'; 

它給我只有1和2

我無法得到正確的輸出我在這裏做錯了什麼?在VARCHAR 注意開始和結束時間

編輯 -

如果我想selectthe 10:30之間的ID,以12:30我用下面這個命令

select id from table where STR_TO_DATE(starttime,'%H:%i')>='10:30' and STR_TO_DATE(endtime,'%H:%i')<='12:30'; 

這給了我唯一的ID 1 ..但不給我2,如果我改變12:30到12:40它給我1 & 2.Bt我使用的是少一點還是相等,所以它應該給我這兩個ID的權利?爲什麼它不這樣工作?

+0

只是好奇,什麼'o/p'代表什麼? –

回答

1

STR_TO_DATE(開始時間, '%H:%I')

您正在使用其中根據documentation格式%H爲:

小時(01 .. 12)

基本上,12以上的東西都是無效的(返回NULL)。 而且,你給了那些ID超過12的值。

使用說明符

%H

在格式00小時 - 23

或指定者

%K

小時0 - 23.