【问题标题】:Search all date and dates between two date with specific time搜索具有特定时间的两个日期之间的所有日期和日期
【发布时间】: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 我需要得到结帐日期之前的日期

标签: php mysql


【解决方案1】:

试试这个:

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)

【讨论】:

  • 我想我粘贴错了,请纠正我.. SELECT * FROM lodgebookings WHERE checkout_date_user = date_add(checkin_date_user, interval 1 day) 这是代码:$query = $this->db->query('SELECT * FROM lodgebookings WHERE checkout_date_user = date_add(checkin_date_user, interval 1 day)');
  • 我的错误是您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '- interval 1 day) AND checkin_date_user >= date_add(checkin_date_user, interval ' at line 1 附近使用的正确语法
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 2013-08-09
  • 2020-05-01
  • 2013-09-03
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多