我正在写一个脚本来记录参加工作场所的人。我要找出一段时间内谁去过这个地方。
它还必须找到在这段时间里去过那里一段时间的人。
也包括那些在时间开始后到达并且在工作日结束前离开的人。任何在任何时候去过那里的人都需要使用这个sql查询来查找。
我有以下几点。但它只会给我那些从一开始就在那里的人 ($time_from)
,并在结束时间前离开 ($time_to)
.
$SQL_String = mysqli_query ($con, "
SELECT *
FROM log
WHERE users_name = '" . $username . "'
AND login_time >= '" . $time_from . "'
AND logout_time <= '" . $time_to . "'
ORDER
BY dateandtime ASC
");
``` `login_time` 以及 `logout_time` 是数据库中用户的开始和结束时间。而 `$time_from` 以及 `$time_to` 是窗体中选定的开始和结束时间。
如果我在这些时间里搜索;
10:00 – 12:00
有这些时间的成员应该被计算在内。9:00 – 10:05
有这些时间的成员应该被计算在内。10:05–11:45应计算有这些时间的成员。11:00 – 12:05
有这些时间的成员应该被计算在内。9:00 – 13:00
简而言之:
我需要找出在给定的时间跨度内谁在工作。不管他们是否在那里呆了一整天,或者迟到,或者早退——如果他们在表格上所读的时间内到过那里。
你能帮我解决这个问题吗??谢谢!
2条答案
按热度按时间sdnqo3pr1#
您希望任何重叠都是:
逻辑很简单,如果a在b结束之前开始,a在b开始之后结束,那么时间框架a与时间框架b重叠。
axkjgtzd2#
您有3个案例:
在规定时间内到达的人
在给定时间内离开的人员
之前到达,之后离开的人员
现在组合成这样:
哦,顺便说一下:您的sql对sql注入可过滤性是开放的。不要在sql字符串中直接使用变量。