mysql将同一行上的2个时间戳列与搜索范围进行比较
我正在使用mysql,需要找到时间戳范围内的用户。一列是记录用户何时进来,另一列是记录用户何时出去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
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