【发布时间】:2013-10-07 06:52:08
【问题描述】:
我很难做到这一点,这是原始查询
$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
我需要得到结帐日期之前的日期
【问题讨论】:
-
使用
time()函数搜索时间。 -
@Nil'z 请查看我的问题的更新..我已经使用了 time()..谢谢
-
select * from table where lodge_name = "willow" AND ( time(checkin_date_user) = '14:00:00' and time(checkout_date_user) = '14:00:00' )
-
@Nil'z 它也返回 null $query = $this->db->query('SELECT * FROM lodgebookings WHERE lodge_name = "willow" AND ( time(checkin_date_user) = "14:00 :00" AND 时间(checkout_date_user) = "14:00:00" )');
-
实际上它真的不会返回任何东西,因为我只有 11:30:00 的所有 checkout_date_user .. 例如 checkin =2013-10-19 14:30:00 checkout=2013- 10-20 11:30:00 我根本不会有任何问题我可以查询签入我的问题是在日期签入=2013-10-19 14:30:00 签出=2013-10-21 11:30 之间: 00 我需要得到结帐日期之前的日期