我遇到了如何执行此操作的麻烦,这是原始查询
$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 ..
如果是的话
checkin = 2013-10-19 14:30:00
checkout = 2013-10-20 11:30:00
我根本不会有任何问题,我可以查询签到
我的问题是在日期之间
checkin = 2013-10-19 14:30:00
checkout = 2013-10-21 11:30:00
我需要在结帐日期之前获取日期
答案 0 :(得分:0)
试试这个:
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)