mysql测试,如果时间超过午夜的时间跨度

时间:2010-06-21 17:24:57

标签: mysql sql time timespan

我正在研究一个mysql查询,该查询将搜索每个具有时间跨度的条目数据库,以查看用户输入时间或时间跨度是否属于条目跨度。

用户可以输入“13:00”或“13:00-16:00”
数据库有这样的条目:

id    startTime    endTime  
1     08:00        12:00  
2     20:00        03:00  
3     14:00        01:00  
4     16:00        21:00  

对于一天中的时间跨度(startTime< endTime),搜索非常容易。问题是测试跨度是否跨越午夜(endTime< startTime)。对于此应用程序,这些值不能具有日期附件(它们仅存储为时间),因此timediff等将不起作用。

更新:
时间跨度永远不会超过24小时,因此startTime为1,endTime为3将始终为2小时项目,而不是26小时项目。

我不使用日期的原因是这与某些事情或多或少类似于营业时间(但不完全是用例)有关。跨度表示的项目每天都有小时数,因此每天添加日期时间戳是不切实际的。

1 个答案:

答案 0 :(得分:3)

我会检查endTime

  1. totaltime = startTime +(24小时 - 结束时间)
  2. 我看到的问题是endTime是第二天和endTime> startTime。例如,您从中午开始,到第二天下午1点结束。如果时间跨度超过2天,也会出现问题。例如,从第1天开始到第3天或更长时间结束。我建议使用日期。