我有一个包含事件数据的表。我还有一份需要查看的日期列表。所以我循环了给定的日期并查询我的表。我需要选择我们在给定日期的事件,如果日期与今天相同,我只需要在特定时间之前发生的事件。时间以军事格式存储,如14:30。
我认为我的查询逻辑过于复杂:
$current_date = date('Y-m-d');
$current_time = date('H:i');
我使用PHP时间和日期的原因,因为我可以从我控制的服务器获得准确的时间。 MySQL的时间已经过了几个小时......
SELECT *
FROM events
WHERE org.id = ".$ID."
AND (
(
DATE(events.date) = '".$givenDate."'
AND
'".$givenDate."' < '".$current_date."'
)
OR
(
DATE(events.date) = '".$givenDate."'
AND
'".$givenDate."' < '".$current_date."'
AND
events.time < '".$current_time."'
)
)
答案 0 :(得分:1)
SELECT *
FROM events
WHERE org.id = ".$ID."
AND date(events.date) = '".$givenDate."'
and if ('".$givenDate."' = '".$current_date."',
events.time < '".$current_time."', true)