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

时间:2013-10-01 07:43:25

标签: php mysql

我遇到了如何执行此操作的麻烦,这是原始查询

$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

我需要在结帐日期之前获取日期

1 个答案:

答案 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)