我正在使用mysql,需要查找在时间戳范围内的用户。一栏是记录用户何时进来,另一栏是记录用户何时出去。
In Out Name
Row1 2017-01-10 08:00:00 2017-01-10 15:00:00 Sam
Row2 2017-01-10 11:00:00 2017-01-10 17:00:00 Tim
SELECT * FROM `TABLE` WHERE In > '2017-01-10 09:00:00' AND Out < '2017-01-10 13:00:00'
或者(在任何人进来之前和离开之后)
SELECT * FROM `TABLE` WHERE In > '2017-01-10 07:00:00' AND Out < '2017-01-10 18:00:00'
这应该返回两个用户,因为他们在上午 8 点到下午 1 点或上午 7 点到下午 6 点的时间范围内都在办公室。但它返回一个空行。有人可以帮忙吗?
最佳答案
您的表中没有给定时间间隔的记录。所以什么也不返回。
您的查询应该类似于
SELECT *
FROM TABLE
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT
AND '2017-01-10 13:00:00' BETWEEN IN AND OUT
编辑:来自评论
当我们谈论范围时,我们指定 2 个值。因此,在上述 2 个值范围内,只有 1 个用户。如果您希望返回所有可能的用户,请将 AND
替换为 OR
。
因此,对于您的情况,查询将是
SELECT *
FROM TABLE
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT
OR '2017-01-10 13:00:00' BETWEEN IN AND OUT
关于mysql 将同一行上的 2 个时间戳列与搜索范围进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41607016/