【问题标题】:Compare date and datetime比较日期和日期时间
【发布时间】:2015-07-20 12:17:36
【问题描述】:

我想比较 sql 中的日期时间和今天的日期。 sql 中的日期时间例如为 2015/05/09 12:00:00,当前日期为 2015/05/09。如果它们相等,我想比较这些东西,但是对于一整天来说,时间是个问题。我有以下查询。

$q1="SELECT reservations.reservation_id, reservations.room_id,   room.room_rate, reservations.arrival_date, reservations.departure_date,
                            meals.meal_rate, room.room_rate, roomtype.max_persons,
                            CONCAT(clients.first_name,' ',clients.last_name)as name

                    FROM reservations, clients, meals, room, roomtype
                    WHERE reservations.room_id=room.room_id AND reservations.client_id=clients.client_id AND room.roomtype_id=roomtype.roomtype_id 
                    AND reservations.meals=meals.meal_id AND reservations.arrival_date=CURDATE()
                    GROUP BY reservation_id
                    ";

reservations.arrival_date=CURDATE() 这仅在 12:00:00 时相等。我希望一整天都相等。实际上,我想比较这两个日期是否相等而没有时间,但我的数据库必须是带有时间的日期时间... 有人有想法吗? 提前谢谢

【问题讨论】:

    标签: php sql datetime compare


    【解决方案1】:

    您应该学习使用标准的join 语法。简单规则:永远不要from 子句中使用逗号。

    您的问题的答案是date() 函数(或类似函数):

    where date(reservations.arrival_date) = CURDATE()
    

    或者不等式:

    where (reservations.arrival_date >= CURDATE() and
           reservations.arrival_date < date_add(CURDATE(), interval 1 day)
          )
    

    第二个实际上是首选,因为它可以利用reservations(arrival_date) 上的索引。

    【讨论】:

    • 实际上这是一个旧的 php 代码,我想添加一些东西。现在我正在使用 join.thnx。你的第二个解决方案也有效,但我只是认为更简单 $today = date("Y-m-d 12:00:00");然后将到达日期与今天进行比较!
    • @stavros 。 . .如果您始终知道时间部分正好是中午,那么这将起作用。
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2012-04-20
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多