我有几个输入数据和过期mysql“日期时间”值。我需要返回给定时间段的总计数。
前任:
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:00总计为3
我假设您希望该期间的任何部分落在您的搜索日期期间内或“重叠”的项目In time
数Out time
。
首先,让我们彻底检查日期中的“重叠”意味着什么。重叠是以下任何一种情况:
开始 1 结束 1 -------------------------------------------------- ------------------------------------------- 开始 2 结束 2 开始 2 结束 2 开始 2 结束 2
并且不是以下任何一种情况:
开始 1 结束 1 -------------------------------------------------- ------------------------------------------- 开始 2 结束 2 开始 2 结束 2
如果你仔细看,你会注意到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`
写这个查询
select count(*) from table name where `In time` <= '2012-02-02 10:00' and `Out Time` >= '2012-02-02 11:00'
它会给你数 3