MySQL:SUBTIME()没有负值?

时间:2012-08-21 17:59:32

标签: php mysql sql datetime

我需要比较两个时间间隔。问题是间隔时间可能从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。< / p>

这可能吗?如何实现?

我愿意接受任何其他解决方案,所以这就是“现实世界”的问题:

我有一张预订保龄球的桌子,他们都从早上9点到午夜2点之间的某个地方开始,他们也有一段时间在这段时间之间。我需要进行搜索并允许客户说出他/她希望看到预订的时间间隔。因此,他/她应该能够搜索例如在23:00和02:00之间开始和结束的预订。因此,我说预约开始时间应该> =搜索开始时间,并且预约结束时间应该<=搜索结束时间。这对于算法来说是完全没问题的,除了对于MySQL 23:00只是大于02:00。

有什么想法吗?

1 个答案:

答案 0 :(得分: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日的时间。这是一个任意日期,但现在您可以对这些字段进行差异计算。