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

mysql将同一行上的2个时间戳列与搜索范围进行比较,mysql,database,timestamp,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

我正在使用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' 
输入输出名称
第1行2017-01-10 08:00:00 2017-01-10 15:00:00山姆
第二排2017-01-10 11:00:00 2017-01-10 17:00:00 Tim
从'2017-01-10 09:00:00'和'2017-01-10 13:00:00'中的'TABLE'中选择*
或者(在任何人进来之前和离开之后)

从'2017-01-10 07:00:00'和'2017-01-10 18:00:00'中的'TABLE'中选择*

这将返回两个用户,因为他们在办公室的时间范围从上午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个用户。如果您希望返回所有可能的用户,请将
替换为

因此,对于您的情况,查询将是

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

谢谢,但它不会返回2个用户。萨姆上午8点在家,蒂姆上午11点在家。搜索范围从上午9点到下午1点,应返回两个用户。谢谢。或有效,但我注意到如果我设置搜索范围,例如“2017-01-10 07:00:00”介于输入和输出之间或“2017-01-10 18:00:00”介于输入和输出之间。。。我没有得到任何结果。我应该得到两个用户,因为他们在时间范围内下降。有什么建议吗?像u一样尝试正式查询,但使用OR运算符
SELECT*FROM TABLE In>'2017-01-10 07:00:00'或Out<'2017-01-10 18:00:00'
@leesho谢,但如果我有另一个日期:2017-01-09 14:30:00,它也会返回它,这是不正确的,因为我只需要在范围内搜索,然后你再次来到范围,第一个答案适合各种用户。。
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