我有两列(日期字段、时间字段),它们将date
和time
存储在字符串中,第一步是将它们组合起来两个字段,以便我可以将它们与当前日期进行比较(我不确定我是否做对了)。第二步是编写查询,仅当从这两列中获取的日期接近当前日期时才应选择记录。该日期应介于当前日期和当前日期前 4 小时之间,因为在那之后,如果不满足某些条件,所有这些记录都会发生一些事情。
日期和时间列的格式:
event_date = 'yyyy/MM/dd'
event_time = 'HH:mm'
所以这是我的查询:
SELECT *
FROM `events`
WHERE DATE_SUB( NOW( ) , INTERVAL 4 HOUR )
< ADDTIME( event_date, event_time )
也许我应该首先将这些字符串转换为日期,然后再使用它们或其他东西?总而言之,如果我有这些日期的一些数据,例如:
1. 2017-02-26 10:00
2. 2017-02-26 11:00
3. 2017-02-27 10:00
当前日期时间是:2017-02-26 06:00
.在这种情况下,我只会得到 1 条记录
,当一小时过去或 2017-02-26 07:00
时,我会得到 2 条记录
最佳答案
如果 event_date
是事件的日期,event_time
是时间,您可以使用 timestamp mysql 函数将它们合并:
select event_date, event_time, timestamp(event_date, event_time)
from events;
但实际将日期和时间信息存储在单个字段中通常是个好主意,例如event_datetime
然后你可以这样写你的查询:
select *
from
events
where
event_datetime between now() and now() + interval 4 hour;
这将返回从现在开始到 future 4 小时后的所有事件。或者,如果您想要过去 4 小时内的事件,请尝试:
event_datetime between now() - interval 4 hour and now();
关于php - 用于检查一个日期是否接近当前日期的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461763/