搜索所有日期和具有特定时间的两个日期之间的日期


Search all date and dates between two date with specific time

我在如何执行此操作时遇到问题,这是原始查询

$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)