如何从php中给定的两个日期按月获取开始日期和结束日期
我试图从两个日期之间庆祝生日的表中筛选成员如何从php中给定的两个日期按月获取开始日期和结束日期,php,codeigniter,Php,Codeigniter,我试图从两个日期之间庆祝生日的表中筛选成员 $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
$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();
这回答了你的问题吗?您能展示一下您现在正在尝试的SQL语句吗?日期是如何存储在数据库中的?他们是DATETIME,DATE,VARCHAR,UNIX_TIMESTAMP>哪个?@Kinglish'DATETIME'嗨,先生,我想要从给定日期开始庆祝生日的成员。上面我的模型工作得很好。但是当我从两个不同的月份过了两次约会。我的模型给空结果我道歉。我误读了你的帖子,错了。我已经更新了我的答案,但需要澄清
成员状态部分。没问题,先生。具有活动、死亡、转移、暂停列表的成员状态。我们需要在截止日期前都处于活动状态的成员OK,所以成员是一个单独的表,对吗?或者在注册中是否有一个名为“成员状态”的字段?如果它是一个单独的表,那么在成员中调用的用户id(Chu id)是什么?Chu id类似于用户id