php - 检查事件是在其他事件之前、之后还是期间

标签 php mysql date time

我被代码困住了。我想在输入事件之前、之后和期间查看 MySQL 数据库中的女巫事件。

我有一个包含以下字段的表:

  • Event_id(int AUTO_INCREMENT)
  • 开始日期(日期)
  • 开始时间 (varchar)
  • end_date(日期)
  • 结束时间 (varchar)

开始时间和结束时间为24小时制,存储时不带冒号分隔符:(所以23:50会存储为2350,1:00会存储为0100)

输入事件的日期和时间将采用相同的格式。

如何进行查询(或脚本)以获取最接近输入事件的事件、检查输入事件期间是否有事件的查询以及获取输入事件之后最接近事件的查询?

最佳答案

首先,从改变你的方案开始,这样你就有了

event_id (int AUTO_INCREMENT),
start_date (timestamp), 
end_date (timestamp)

对于您的查询,您现在可以使用 TIMEDIFF

最近的事件

SELECT *, TIMEDIFF(input_date, start_date) diff
FROM events ORDER BY diff LIMIT 1

这将为您带来下一个事件。

事件期间的事件

SELECT * FROM events
WHERE
  TIMEDIFF(input_date, start_date) > 0 AND
  TIMEDIFF(input_date, end_date) < 0
FROM events

这将为您提供正在进行的事件。

在进行比较之前,您可能需要将 TIMEDIFF 包装在 SECONDS() 中。

关于php - 检查事件是在其他事件之前、之后还是期间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014789/

相关文章:

MySQL:按最小值和最大值分组

php - 如何解决此分页?

python - 如何使用python根据周数确定日期?

php mysql数据库选择

php - 如何按升序排列MySQL列?

php - htaccess 从 index.php 重定向到/仅在特定文件夹中

java - 使用日历开始日期和结束日期填充 jtable

php - 预期的异常消息未在 PHP 中显示

php - 使用 mysql 和 php 将用户名从 session 记录到表中

date - 如何在 Swift 中解析/创建格式为小数秒 UTC 时区(ISO 8601、RFC 3339)的日期时间戳?