0

我很难做到这一点,这是原始查询

$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我根本不会有任何问题我可以查询签入我的问题是在日期签入=2013-10-19 14:30:00 签出=2013-10-21 11:30:00
之间

我需要得到结帐日期之前的日期

4

1 回答 1

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)
于 2013-10-01T09:39:08.180 回答