2

我正在研究一个 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)进行搜索很容易。问题是在跨度跨过午夜(结束时间 < 开始时间)时进行测试。对于此应用程序,这些值不能有日期附件(它们仅作为时间存储),因此 timediff 等将不起作用。

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

我不使用日期的原因是这与工作时间或多或少有关(但不完全是那个用例)。跨度表示的项目具有每天的小时数,因此为每一天添加日期时间戳是不切实际的。

4

1 回答 1

3

我会检查 endTime

  1. 总时间 = 开始时间 +(24 小时 - 结束时间)

我看到的问题是 endTime 是否是第二天并且 endTime>startTime。例如,您从中午开始,到第二天下午 1 点结束。如果时间跨度超过 2 天,也会出现问题。例如,从第 1 天开始,到第 3 天或更长时间结束。我建议使用日期。

于 2010-06-21T17:30:42.907 回答