我有一个包含整数列startTime和endTime的表(例如60表示凌晨1点,120表示凌晨2点,1320表示10点PM .....等等)
有时endTime值可能小于startTime(从晚上10点开始到凌晨2点结束,然后startTime将是1320,endTime将是60)
现在如果用户输入11PM以查找11PM(1380)是否在晚上10点(1320)和凌晨2点(120)之间....我需要找到的SQL语句是什么。
我正在使用: select * from dayTimes 1380 BETWEEN startTime和endTime。
我只需要一个没有复杂查询的select语句
答案 0 :(得分:2)
如果开始时间和结束时间不超过24小时,则以下代码将起作用:
select * from dayTimes where 540 BETWEEN startTime and
if(endTime-startTime>=0,endTime,1440+endTime)
OR
540+1440 BETWEEN startTime and
if(endTime-startTime>=0,endTime,1440+endTime)
答案 1 :(得分:0)
你应该在MySQL中对这种类型的sql语句使用Case
语句。
对于你的问题,这样的事情应该有效。
Select *,
Case When startTime>endTime THEN 1380 BETWEEN endtime and endTime+startTime
When endTime>startTime THEN 1380 BETWEEN startTime and endTime
from dayTimes
此外,您可能希望查看此post
答案 2 :(得分:0)
你可以将这个问题分成两部分,然后检查:
第一部分是检查给定时间是否在' startTime'和1439(即下午11:59) 第二部分(如果给定时间在00:00和结束时间之间进入图片)
select * from dayTimes where 1300 between startTime and 1439 or 1300 between 0000 and endTime;