我在如何执行此操作时遇到问题,这是原始查询
$this->db->query(
'
SELECT
*
FROM
lodgebookings
WHERE
lodge_name = "willow"
AND
(
(
checkin_date_user BETWEEN "' . date('Y-m-d',strtotime($book_date)) . ' 14:30:00"
AND
"' . date('Y-m-d',strtotime('+1 day',strtotime($book_date))) . ' 11:30:00"
)
OR
(
"' . date('Y-m-d',strtotime($book_date)) . ' 14:30:00"
BETWEEN
checkin_date_user
AND
checkout_date_user
)
)
'
);
现在,此查询仅根据 $book_date 返回数据我想做的是返回没有 $book_date 的数据,这意味着所有日期以及所有checkin_date_user和checkout_date_user之间的所有日期时间 14:30:00
更新:我已经用了时间这是我的代码
$query = $this->db->query(
'
SELECT
*
FROM
lodgebookings
WHERE
lodge_name = "willow"
AND
TIME(checkin_date_user) = "14:30:00"
AND
(
(
"' . date('Y-m-d', strtotime($book_date)) . ' 14:30:00"
BETWEEN
checkin_date_user
AND
checkout_date_user
)
)
'
);
它仍然需要 $book_date,当然它只会返回依赖于 $book_date 的数据。如果我不使用 $book_date,它会返回 null
更新:
实际上它真的不会返回任何东西,因为我只有 11:30:00 用于所有checkout_date_user。如果例如签到 =2013-10-19 14:30:00
退房=2013-10-20 11:30:00我完全不会有任何问题,我可以查询签到我的问题是日期之间签到 =2013-10-19 14:30:00
退房=2013-10-21 11:30:00
我需要在结账日期之前获取日期
试试这个:
select * from my_table where checkout_date_user < date_add(checkout_date_user, - interval 1 day) AND checkin_date_user >= date_add(checkin_date_user, interval 1 day)