2015-09-24 1 views
0

У меня возникла странная проблема, связанная с временем MySQL, которое я не могу решить вообще.MYSQL с использованием TIME Между в TimeRange

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

Требование, чтобы отобразить LandingPage между 18:00:00 и 04:00:00 который находится в 6 часов вечера до 4 часов утра. Я пользуюсь следующим запросом:

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

Спасибо за редактирование и ответ на мой вопрос. Я проверил этот запрос, и он показал правильный результат для меня. –

Смежные вопросы