如何从 php 中给定的两个日期按月获取开始日期和结束日期

How to get the start date and end date by month wise from given two dates in php

我正在尝试从将在两个日期之间庆祝生日的表格中筛选成员。

$start_date = '2021-05-30';
$end_date = '2021-07-03';

我想要一个像下面这样的数组。

$date = array (
   array ('start' => '2021-05-30', 'end' => '2021-05-31'),
   array ('start' => '2021-06-01', 'end' => '2021-06-30'),
   array ('start' => '2021-07-01', 'end' => '2021-07-03')
);

这很有挑战性,但我想我已经找到了。

顺子PHP/MYSQL:

$s = date("md", strtotime($start));
$e = date("md", strtotime($end));
$query = "SELECT registration.* 
FROM registration 
LEFT JOIN members 
ON members.mem_tbl_id = registration.mem_tbl_id
WHERE registration.ch_id = $ch_id
AND members.status = 'active'
AND CONCAT(LPAD(MONTH(registration.birth),2,'0'), LPAD(DAYOFMONTH(registration.birth),2,'0')) BETWEEN $s AND $e
ORDER BY registration.birth DESC";

这里是 CodeIgniter 版本

$s = date("md", strtotime($start));
$e = date("md", strtotime($end));
$this->db->select('*');
$this->db->from('registration');
$this->db->join('members', 'members.mem_tbl_id = registration.mem_tbl_id', 'left'); 
$this->db->where("CONCAT(LPAD(MONTH(registration.birth),2,'0'), LPAD(DAYOFMONTH(registration.birth),2,'0')) BETWEEN $s AND $e");
$this->db->where("registration.ch_id", $ch_id);
$this->db->where("members.status", "active");
$this->db->order_by("registration.birth DESC");
$result = $this->db->get()->result();