2015-02-10 64 views
0

我有下表。我想只對時間11:35在starthour和endhour之間的行進行SELECT。在兩個不同列中選擇一小時到幾小時

TABLE NAME USER 
    id, name, starthour(DATE), endhour(DATE) 
    1, "mariano", 10:35:00, 13:00:00 
    2, "patrick", 17:35:00, 19:00:00 
    3, "gloria", 21:22:00, 22:00:00 
    4, "david", 22:29:00, 23:33:00 

如果嘗試執行以下SELECT操作。

SELECT id, name, starthour, endhour FROM user WHERE (11:59 BETWEEN starthour AND endhour); 
+1

starthour和endhour是DATE對象,而不是TIME對象?你可以用一個模數標準化它,但以這種方式做它肯定更復雜。 – 2015-02-10 19:06:13

回答

1

其實,我不確定你的starthour和endhour字段是DATE類型。你不想使用TIME嗎?

如果不是這裏是日期可能重複:SQL query to select dates between two dates

您應該使用TIME(starthour)或EXTRACT()函數http://www.w3schools.com/sql/func_extract.asp,那麼結果將是,如果你使用TIME()函數從表達中提取時間這是通過:

SELECT id, name, starthour, endhour FROM user WHERE (TIME('11:59:00') BETWEEN TIME(starthour) AND TIME(endhour)); 

試試這個,我認爲它應該工作。

2

我只是用比大於少,像這樣:

SELECT id, name, starthour, endhour 
FROM user 
WHERE starthour < 11:35:00 AND endhour > 11:35:00; 

...,是的,你可能意味着使用TIME數據對象?您可以比較DATE,但只是調整數據格式。

1

看來你試圖在日期列上做時間查詢。假設開始時間和結束時間是實際的日期時間列,這應該可以做到。

SELECT id, name, starthour, endhour 
FROM user WHERE TIME(starthour) <= '11:35:00' 
AND TIME(endhour) <= '11:35:00' 

它應該提供'11:35:00'的記錄而不管一天。 如果你不使用的日期時間,然後starthour(DATE), endhour(DATE)應該starthour(TIME), endhour(TIME)和查詢

SELECT id, name, starthour, endhour 
FROM user WHERE starthour <= '11:35:00' 
AND endhour <= '11:35:00' 

應該工作。

相關問題