2015-09-24 72 views
0

我正面臨一個與MySQL時間有關的奇怪問題,我根本無法解決這個問題。MYSQL在TimeRange中使用TIME之間

Table:landing 
landingPage (varchar) - mylanding.html 
starttime (time): 18:00:00 
endTime (time) : 04:00:00 

要求是18:00:00和4點00分00秒,其是6時至上午04點之間顯示的LandingPage。我正在使用以下查詢

select landingPage from landing where currentTime between starttime and endtime. 

以上查詢從18:00:00到23:59:59起作用。但在午夜之後,它不顯示任何值。舉一個例子

select landingPage from landing where '02:00:00' between starttime and endtime. 

我甚至嘗試了下面的查詢,但午夜後同樣的問題。

select landingPage from landing where currentTime>starttime AND currentTime<endtime 

這是一個Java應用程序,我應該在這裏使用AM/PM邏輯嗎?

+0

也許MySQL正在做怪事情currentTime'的'類型。作爲你通過它的Java類型?如果使用['curtime()'](http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_curtime)會發生什麼? – mthmulders

回答

1

的問題來自於午夜之後,小時追溯到00:00:00所以間隔[18:00:00, 04:00:00]是空的事實:當日子沒有考慮,沒有時間可以比18h更大,而在同一天被低於4h

您可以實現以下邏輯:顯示着陸頁

  • 如果時間不超過04:00:00下:這將意味着這一個小時午夜04:00:00之間;
  • 或者如果小時大於18:00:00:這意味着小時在18:00:00和午夜之間。

查詢變爲:

select landingPage from landing where currentTime < endTime OR currentTime > startTime 
+0

感謝您編輯和回答我的問題。我測試了這個查詢,併爲我顯示了正確的結果。 –

相關問題