我有一个带有id, user_id, start_date_time, end_date_time
的表
User_id有许多记录。我需要从user_id中搜索多条记录的Start_date_time和End_date_time之间的时间。示例
1,28,2019-11-16 18:00:00, 2019-11-16 20:00:00
2,28,2019-11-17 22:00:00, 2019-11-17 23:10:00
3,28,2019-11-17 23:00:00, 2019-11-17 23:15:00
如果我在任何给定的时间搜索,我需要大于给定时间的所有记录的输出。
所以如果我需要2019-11-17 22:15:00以上的记录,我需要2个记录的输出。
你能帮我举个例子吗。
这就是您想要的吗?
select t.*
from t
where t.end_date_time > ?;
?
是您要传递的值的参数占位符。
如果您想要包含的范围,您可以使用BETWEEN
:
select * from times
WHERE cast('2019-11-17 22:15:00' as datetime)
between `start_date_time` and `end_date_time`;
如果不想将开始和结束时间包括在范围内,可以使用两个比较>
和<
:
select * from times
where cast('2019-11-17 22:15:00' as datetime) > start_date_time
AND cast('2019-11-17 22:15:00' as datetime) < end_date_time;
因此,如果我需要2019-11-17 22:15:00以上的记录,我需要2条记录的输出。
只有一行与您给出的日期相匹配,就其价值而言#2.
https://www.db-fiddle.com/f/bPk1CYioL6cVasStZKzQ4j/2