我正在研究一个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小时项目。
我不使用日期的原因是这与某些事情或多或少类似于营业时间(但不完全是用例)有关。跨度表示的项目每天都有小时数,因此每天添加日期时间戳是不切实际的。
答案 0 :(得分:3)
我会检查endTime
我看到的问题是endTime是第二天和endTime> startTime。例如,您从中午开始,到第二天下午1点结束。如果时间跨度超过2天,也会出现问题。例如,从第1天开始到第3天或更长时间结束。我建议使用日期。