mysql 将同一行上的 2 个时间戳列与搜索范围进行比较

标签 mysql database timestamp

我正在使用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/

相关文章:

database - 我们如何保存在sqlite3中创建的数据库

php - 更新 SQL 列

javascript - Facebook 时间戳和 JavaScript

php - 计算特定范围日期和时间的记录

php - 将时间戳添加到 SQL 查询中

php 脚本没有打开欢迎页面,也没有使用 wamp 写入数据库

PHP 调用 PostgreSQL 函数 - 类型问题?

php - for循环将两个相似的条目放入php的一个循环中

php - 如何手动将时间戳插入 mySQL 数据库?

Mysql计算同一字段的时间戳之间的时间差?