Php 如何从数据库中获取在特定日期和时间内未分配的用户列表
我尝试了很多逻辑,但仍然没有得到准确的结果。 我有两个字段使用datetime从shift\u和shift\u到。数据库中也存在相同的字段。 现在,我必须检查哪些用途在特定的“从”和“到”期间没有分配任何班次 预期结果: 查询应返回在输入的日期和时间内未占用的用户列表 使用的表格:Php 如何从数据库中获取在特定日期和时间内未分配的用户列表,php,mysql,Php,Mysql,我尝试了很多逻辑,但仍然没有得到准确的结果。 我有两个字段使用datetime从shift\u和shift\u到。数据库中也存在相同的字段。 现在,我必须检查哪些用途在特定的“从”和“到”期间没有分配任何班次 预期结果: 查询应返回在输入的日期和时间内未占用的用户列表 使用的表格: 用户-包含用户日期 角色\用户-确定用户的角色 角色-确定角色列表 班次-确定班次细节,如时间、日期、地点等 公司-仅识别与公司相关的用户 注意:我从一个表单中获取了来自datetime的shift_,从中获取了来自
SELECT u.id,u.name FROM users as u
left join role_user as ru on u.id=ru.user_id
left join roles as r on ru.role_id=r.id
left join shift_assignment as saa on saa.user_id=u.id
left join shifts as s on s.id=saa.shift_id
left join companies as c on u.company_id= c.id
WHERE r.name='security_officer_agents' and
c.id=$company_id and ((DATE('$shift_from_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_from_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to')) or (DATE('$shift_to_date') NOT BETWEEN DATE('s.shift_from') and DATE('s.shift_to') and TIME('$shift_to_time') NOT BETWEEN TIME('s.shift_from') and TIME('s.shift_to'))
请在这方面帮助我。还有一种方法可以避免不在中间,因为它不考虑那天。它只是在这些日期之间进行
移位表结构
'id',
`location_id` ,
`duty_point_id`,
`contact`,
`phone`,
`shift_from`,
`shift_to` ,
`created_by` ,
`created_at`,
`updated_at`,
PRIMARY KEY (`id`),
KEY `shifts_location_id_foreign` (`location_id`)
你可以应用这样的条件
fromtimedbfieldname < '$endtimephpvarible'
AND
totimedbfieldname > '$starttimephpvarible'
我必须用这个替换什么代码。?请解释一些关于这个和工作的逻辑。关于时间延迟,你可以粘贴“shift”表的db结构吗?是的,当然可以。现在检查shift的类型是DATETIME还是DATE??
s.shift_from < $shift_to_date
AND
s.shift_to > shift_from_date
$shift_to_date=date("Y-m-d H:i:s",strtotime($shift_to_date))