【问题标题】:datetime select with -15 minute interval showing wrong result日期时间选择 -15 分钟间隔显示错误结果
【发布时间】:2015-06-01 06:59:08
【问题描述】:

对于房间预订页面,我正在查询 3 个表中的条目。日期时间值在一个表中,如果房间钥匙已被签出,则另一个表保留信息。另一个表保存预订信息。如果当前时间已超过预订时间的开始时间至少 15 分钟,并且尚未签出密钥,则应删除该条目。问题是,它还删除了未来的预订,其中预订的开始时间还没有过去。我的查询如下所示。

SELECT dt.field_reservation_datetime_value
     , dt.entity_id
     , co.field_reservation_checked_out_value
     , co.entity_id
     , res.reservation_id 
  FROM field_data_field_reservation_datetime dt 
  JOIN field_data_field_reservation_checked_out co 
    ON co.entity_id = dt.entity_id 
  JOIN studyroom_reservation res 
    ON res.reservation_id = co.entity_id 
 WHERE co.field_reservation_checked_out_value = 0 
   AND DATE (dt.field_reservation_datetime_value) <= NOW() - INTERVAL 15 MINUTE

现在是上午 9 点 52 分,在接下来的 2 小时 38 分钟内应该不会出现。我得到的是这样的:

知道我可能做错了什么吗?

编辑:添加表格别名并截图

【问题讨论】:

  • 查看表别名
  • 添加了别名。输出还是一样。我添加了别名(参见上面的编辑帖子)。你是这个意思还是别的意思?
  • 哦,我知道,但至少现在可以阅读了。
  • Date 是一个 DATE,NOW() 是一个日期时间。会不会是这个问题?
  • 如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。

标签: mysql datetime intervals


【解决方案1】:

用下面的代码解决了

SELECT dt.*, co.*, res.*
FROM field_data_field_reservation_datetime AS dt 
JOIN field_data_field_reservation_checked_out AS co 
ON co.entity_id = dt.entity_id
JOIN studyroom_reservation as res 
ON res.reservation_id = co.entity_id 
WHERE co.field_reservation_checked_out_value = 0 
AND ((dt.field_reservation_datetime_value) 
<= DATE_FORMAT(NOW() - INTERVAL 15 MINUTE,'%Y-%m-%d %H:%i:%s'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多