0

我需要比较两个时间间隔。问题是时间间隔可能从 09:00:00 到 02:00:00 不等。当您尝试获取此期间的行时,不会显示任何行,因为开始时间大于结束时间。

所以我想如果我从我使用的每个值中减去 3 小时,那么查询就会起作用。周期范围为 06:00:00 - 23:00:00,结束时间总是大于开始时间。

但是,我尝试使用 SUBTIME() 来执行此操作,但正如文档所述,02:00:00 - 03:00:00 是 -01:00:00,我需要它是 23:00:00。

这可能吗?如何实现?

我对任何其他解决方案持开放态度,所以这是“现实世界”问题:

我有一张保龄球预订的桌子,它们都在早上 9 点到午夜 2 点之间开始,在这段时间之间也有一个结束时间。我需要进行搜索并让客户说出他/她希望在哪个时间间隔内查看预订。因此,他/她应该能够搜索例如在 23:00 和 02:00 之间开始和结束的预订。所以我说预订开始时间应该>=比搜索开始时间,预订结束时间应该<=比搜索结束时间。这作为算法非常好,除了 MySQL 23:00 比 02:00 大。

有任何想法吗?

4

1 回答 1

2

尝试将期间结束点存储为日期时间值(而不是时间)。

然后对结果使用 timediff 或 timestampdiff。

哇,主管应该雇佣有合适技能的人来设计软件,然后听取他们的意见,但这不是重点。

你仍然可以做你想做的事。作为子查询添加以下两个变量:

(case when start < '4:00:00' then dateadd('2000-01-02 00:00:00', start)
      else dateadd('1900-01-01 00:00:00', start
 end) as startwithday
(case when end < '4:00:00' then dateadd('2000-01-01 00:00:00', end )
      else dateadd('1900-01-01 00:00:00', end 
 end) as endwithday

这些将时间转换为 2000 年 1 月 1 日或 1 月 2 日的时间。这是一个任意日期,但现在您可以对这些字段进行差异计算。

于 2012-08-21T18:04:45.147 回答