MySql-时间安排查询

时间:2019-11-16 17:25:36

标签: mysql sql datetime

我有一个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条记录。

能帮我举个例子吗?

2 个答案:

答案 0 :(得分:1)

这是您想要的吗?

select t.*
from t
where t.end_date_time > ?;

?是您要传递的值的参数占位符。

答案 1 :(得分:0)

如果您希望包含包含范围,则可以使用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