因此,我有一个视图报告显示,它将句点从和周期筛选到,如下所示:

而且,我有雇员的数据,日期如下:

然后,当我查看报告时,二月份的end_date不会出现,因为处理的时间和处理的时间仅在一月份。它应该会出现,因为start_date是在一月份。

这是我的问题,请帮忙。
$this->db->select("a.id, a.employee_id, a.employee_name, a.leave_name, a.start_date, a.end_date, a.status,
b.id, b.employee_id, b.job_title_name, b.employment_status_name")
->join('hr_employee b', 'a.employee_id = b.employee_id', 'left')
->where("a.start_date AND a.end_date BETWEEN '$data[from]' AND '$data[to]'");
return $this->db->get('hr_leaves a');发布于 2022-01-07 03:46:04
解决方案1:如果该查询有效,将使用该查询:
->where("('$data[from]' BETWEEN a.start_date AND a.end_date) OR ('$data['to']' BETWEEN a.start_date AND a.end_date");解决方案2:创建日期间隔并查询员工的开始日期和结束日期之间的每个日期,如果为真,则添加到list $sql_res中。
$begin = new DateTime($data['from']);
$end = new DateTime($data['to']);
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
$sql_res = array();
foreach ($period as $dt) {
$curent_date = $dt->format("Y-m-d");
$this->db->select("a.id, a.employee_id, a.employee_name, a.leave_name, a.start_date, a.end_date, a.status,
b.id, b.employee_id, b.job_title_name, b.employment_status_name")
->join('hr_employee b', 'a.employee_id = b.employee_id', 'left')
->where("$curent_date BETWEEN a.start_date AND a.end_date");
$sql_res[] = $this->db->get('hr_leaves a')->row();
}
return $sql_res;https://stackoverflow.com/questions/70616141
复制相似问题