对于当前时间,我增加了5分钟
$maxTime = date('H:i:s', strtotime('+5 minutes', strtotime($formatedAusDateTime)));
$minTime = date('H:i:s', strtotime('-5 minutes', strtotime($formatedAusDateTime)));
对于时间范围,我得到的是“23:57:58”和“00:07:58”。对于这个时间范围,它没有选择“00:02:45”。 这个方法的错误是什么,我如何选择“00:02:45”行与给定的时间范围。
查询是这样的,
SELECT * FROM v2 WHERE v2.cli = '835' AND (v2.call_time>= '23:57:58' AND v2.call_time<= '00:07:58');
您需要区分$maxtime>; $mintime
和$maxtime<; $mintime
对于$maxtime>; $mintime
是和
:
AND (v2.call_time>= '22:57:58' AND v2.call_time<= '23:07:58');
对于$maxtime<; $mintime
是或
:
AND (v2.call_time>='23:57:58' OR v2.call_time<= '00:07:58');
根据您用于与MySQL通信的API,您可以使用准备好的语句和命名参数在一个查询中编写这些信息。
差不多,但正如我所说的,这取决于API。 在本例中,它就是在php PDO中的样子:
AND (
(
(:minTime<:maxTime) AND (v2.call_time>=:minTime AND v2.call_time<=:maxTime)
)
OR
(
(:minTime>:maxTime) AND (v2.call_time>=:minTime OR v2.call_time<=:maxTime)
)
);
条件'00:02:45'(v2.call_time)>; “23:57:58”
为false。
如果您需要比较午夜前后的记录,请比较完整的日期时间,而不仅仅是时间。
例如
SELECT * FROM v2 WHERE v2.cli = '835' AND (v2.call_time>= '2020-06-06 23:57:58' AND v2.call_time<= '2020-06-07 00:07:58');
当然,您需要存储datetime而不是Time。