【发布时间】:2022-11-06 02:34:17
【问题描述】:
我的表中有这些行,数据库中有start 和end 列,例如这些数据类型为日期时间
start | end
1 2022-10-27 11:59:00 2022-10-27 01:00:00
2 2022-10-28 01:59:00 2022-10-28 05:00:00
3 2022-11-22 11:59:00 2022-11-22 07:00:00
4 2022-11-25 01:59:00 2022-11-25 06:00:00
使用此查询检索位于给定日期时间组合之间的行数
$this->db->query("SELECT * FROM booking WHERE (TIMEDIFF('$start_time', TIME(start)) >=0 AND TIMEDIFF('$start_time', TIME(end)) <= 0) AND (TIMEDIFF('$end_time', TIME(start)) >=0 AND TIMEDIFF('$end_time', TIME(end)) <= 0) AND user_id=$user_id")->num_rows();
其中start_time 和end_time 值就像
$start_time=13:00:00
$end_time=22:59:00
$start_time=date('Y-m-d H:i:s', strtotime($fromDate.$start_time));
$end_time=date('Y-m-d H:i:s', strtotime($toDate.$end_time));
也试过这个查询但没有用
select * from booking where (start between '2022-10-27 12:20:00' and '2022-10-27 14:50:00') AND (end between '2022-10-27 12:20:00' and '2022-10-27 14:50:00')
任何解决方案。谢谢
【问题讨论】:
-
只是一个注释,但 BETWEEN 永远不会在这里工作,因为 BETWEEN 要求较低的数字(序数等)位于左侧。你的翻转开始/结束时间。
标签: mysql sql codeigniter codeigniter-3 codeigniter-2