2013-04-30 48 views
1

如果日期匹配且時間在開始時間和結束時間之間,我想選擇數據。我嘗試了很多方法,但我沒有成功。MySQL:無法選擇時間範圍內的數據

查看下面數據表中的第3行,開始時間爲08:00:00,結束時間爲11:00:00。這意味着09:00:00是08:00:00到11:00:00之間

請幫幫我。

這裏是我的查詢:

SELECT * FROM (`rides`) WHERE `date` = '2013/04/30' AND `start_time` >= '9:00:00' AND `end_time` <= '9:00:00' 

表結構,如果你需要知道字段的數據類型:

CREATE TABLE IF NOT EXISTS `rides` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    ..., 
    ..., 
    `date` date NOT NULL, 
    `start_time` time NOT NULL, 
    `end_time` time NOT NULL 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ; 

數據

+3

**破折號**但**斜槓**。太本地化 – 2013-04-30 11:06:29

+0

從查看數據看,查詢應該正確執行,但不返回任何數據,因爲數據集中沒有任何行具有正確的日期和時間組合。你有錯誤嗎? – 2013-04-30 11:10:04

+0

你可以在這裏選擇並複製粘貼數據而不是圖片嗎? – 2013-04-30 11:13:56

回答

2

您寫道:

檢查第3行(...)這意味着09:00:00是08之間: 00:00 and 11:00:00

我假設您期望您的結果集中包含此行。顯然,你的WHERE條件是錯誤的。你想要的是:

WHERE ... start_time <= '9:00:00' AND '9:00:00' <= end_time 

或可替代

WHERE ... '09:00:00' BETWEEN start_time AND end_time 

通知領先0在上面的例子中是必需的。更典型的形式是:

WHERE ... CAST('9:00:00' AS TIME) BETWEEN start_time AND end_time 
+0

好的答案。接着你的回答,最後我解決了。這裏是我的最終查詢:'SELECT * FROM(rides)WHERE date ='2013/04/30'CAST('8:00:00 '時間)在start_time和end_time之間;;) – itskawsar 2013-04-30 16:25:38

-1

從查看數據看,查詢不應該返回任何數據,因爲表中沒有合適的數據行。

0

您可以MySQL的 的條款之間使用看一看這裏 http://www.tutorialspoint.com/mysql/mysql-between-clause.htm

+0

他們正在使用一個字段之間的子句。但我有兩個字段和一個數據:( – itskawsar 2013-04-30 11:41:40

+0

看看它的工作原理: SELECT * FROM rides WHERE date ='2013/05/1'AND(start_time> ='8:00:00'AND end_time <= '11: 00:00') – 2013-05-01 16:54:45