【问题标题】:Search record between 3 date ranges搜索 3 个日期范围之间的记录
【发布时间】:2019-09-07 17:36:50
【问题描述】:

我需要从选择 3 个(不是 2 个)日期/时间范围之间的记录的数据库表中输出数据

例如开始时间:2019-09-07 18.00 结束时间:2019-09-07 20.00

因此用户应该能够在活动开始日期时间 (6.p.m - 18.00) 之前 25 分钟看到记录,但不能在结束日期时间 (8.p.m -20.00) 之后看到。

我试过了

db->query = "SELECT o_id, schedule, date, start_time, end_time FROM working_schedule WHERE o_id = '".$user_id."'
AND (start_time <= '".date('Y-m-d\TH:i:s', strtotime("-25 minutes"))."' AND start_time >= '".date('Y-m-d\TH:i:s')."') 
AND end_time >= '".date('Y-m-d\TH:i:s')."'";

但结果为 NULL。

供参考HERE'S一个sql小提琴。

提前感谢您为我指明正确的方向。

【问题讨论】:

  • 简化问题,和PHP有关吗?您可以在 mysql 中进行日期/数学差异。 stackoverflow.com/questions/3401551/mysql-interval-mins
  • 与数据库中的值相比,您的查询值显示什么?
  • @FunkFortyNiner 如果这是您想知道的,则当前输出为 NULL,否则我没有得到您的问题。
  • @Someone33 我的意思是,如果您“回显”查询和/或var_dump() 它,它究竟显示了什么?看到这一点,它可能会帮助您找出没有按照您想要的方式工作的地方。另一件事;如果您将日期存储为纯文本,MySQL 具有专门为此而设计的内置功能,这使得查询更加容易。
  • 这就是问题所在。你不应该逃避任何事情。使用准备好的语句。

标签: php mysql date datetime time


【解决方案1】:

你需要这个吗?

 select * from working_schedule
 where
 NOW() BETWEEN DATE_SUB(start_time,INTERVAL 25 MINUTE)  AND end_time

【讨论】:

  • 太好了,就是这样!非常感谢,永远不会像这样强硬。
猜你喜欢
  • 2023-03-26
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
相关资源
最近更新 更多