MYSQL在TimeRange中使用TIME

时间:2015-09-24 07:47:38

标签: java mysql sql database

我面临一个与MySQL时间相关的奇怪问题,我根本无法解决。

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

要求是在18:00:00到04:00:00(下午6点到凌晨4点)之间显示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逻辑吗?

1 个答案:

答案 0 :(得分:1)

问题来自于午夜之后,小时会回到00:00:00,因此间隔[18:00:00, 04:00:00]为空:当不考虑日期时,任何小时都不能超过{{1在同一天低于18h的时候。

您可以实施以下逻辑:显示目标网页

  • 如果小时低于4h:则表示小时在午夜和04:00:00之间;
  • 或者如果小时比04:00:00好:这意味着小时介于18:00:00和午夜之间。

查询变为:

18:00:00