Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从php中给定的两个日期按月获取开始日期和结束日期_Php_Codeigniter - Fatal编程技术网

如何从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