我试图在MySQL或PHP中创建一个语句,它只会选择在下一次出现的凌晨4点之前发生的值,即下一次凌晨4点发生的值。我目前有一个像这样的SELECT语句:
SELECT *
FROM `dated`
WHERE (
DATE(`start_timestamp`) = DATE(NOW())
OR DATE(`end_timestamp`) = DATE(NOW())
)
这使我获得了今天可用的那些,但是,我想排除今天有效但在凌晨4点之后发生的结果
答案 0 :(得分:3)
你可以试试这个:
select *
from dated
where start_timestamp <= date(now() - interval 4 hour) + interval 28 hour;
从当前时间减去四小时,并使用date()
截断时间部分。然后它会增加一天四小时来到下一个凌晨4点。
编辑:
从过去4点过滤到下一个过滤器使用相同的想法:
select *
from dated
where start_timestamp >= date(now() - interval 4 hour) + interval 4 hour and
start_timestamp < date(now() - interval 4 hour) + interval 28 hour;