在给定的两个mysql时隙之间获取几次插槽的计数

时间:2012-10-11 06:05:53

标签: php mysql

我有几个数据和日期mysql“datetime”值。我需要从给定的时间段返回总计数。

例如:

In time                Out Time
2012-02-02 10:00       2012-02-02 12:00
2012-02-02 09:00       2012-02-02 14:00
2012-02-02 10:00       2012-02-02 11:00

我需要从 2012-02-02 10:00 2012-02-02 11 <总计 3 :00

2 个答案:

答案 0 :(得分:2)

我假设您想要计算期间In timeOut time的任何部分属于您的搜索日期期间或与之重叠的项目。

首先,让我们详尽地研究日期中“重叠”的含义。重叠是以下任何一种情况:

                 Start1                     End1
---------------------------------------------------------------------------------
 Start2                       End2
 Start2                                                       End2
                             Start2                           End2

并且不是以下任何一种情况:

                 Start1                     End1
---------------------------------------------------------------------------------
 Start2  End2
                                                      Start2  End2

如果你仔细观察,你会发现Start2 < End1 AND End2 > Start1定义了这种关系,所以这将成为你的WHERE条款。


因此,您应该尝试以下方法:

SELECT COUNT(*)
FROM myTable
WHERE '2012-02-02 10:00:00' <= `Out Time`
AND '2012-02-02 11:00:00' >= `In Time`

答案 1 :(得分:1)

撰写此查询

select count(*) from table name where `In time` <= '2012-02-02 10:00' and `Out Time` >= '2012-02-02 11:00'

它会给你数3