Php 只需要从日期开始提取年份和月份
这里,我在表中插入的值如下所示Php 只需要从日期开始提取年份和月份,php,mysql,codeigniter,date,Php,Mysql,Codeigniter,Date,这里,我在表中插入的值如下所示 `2017-01-01`, `2017-01-02`, `2017-01-03`, `2017-01-04`, `2017-01-05`, `2017-01-06`. 我只需要从那以后的一年一个月, 为此,我使用了如下代码 public function present_report_by_empid($user_id = null,$date = null) { $query='tbl_attendance.date_in'; $thi
`2017-01-01`,
`2017-01-02`,
`2017-01-03`,
`2017-01-04`,
`2017-01-05`,
`2017-01-06`.
我只需要从那以后的一年一个月,
为此,我使用了如下代码
public function present_report_by_empid($user_id = null,$date = null)
{
$query='tbl_attendance.date_in';
$this->db->where('tbl_attendance.attendance_status', 1);
$this->db->where('tbl_attendance.user_id', $user_id);
$this->db->where(date('Y-m',strtotime($query)), $date);
return $this->db->count_all_results('tbl_attendance');
}
我的$date值是2017-01
,当我这样给出时,我得到了这样的错误
选择计数(*)作为
numrows来自
tbl\u考勤其中
tbl\u考勤考勤状态=1和
tbl\u考勤
用户id='1'和
1970-01='2017-01'
首先需要将日期解析为Y-m格式,然后可以使用此列作为条件
public function present_report_by_empid($user_id = null,$date = null)
{
$query='tbl_attendance.date_in';
$this->db->select('tbl_attendance.*,DATE_FORMAT(tbl_attendance.date_in,"%Y-%m") as date_parse');
$this->db->where('tbl_attendance.attendance_status', 1);
$this->db->where('tbl_attendance.user_id', $user_id);
$this->db->where('date_parse',date('Y-m',strtotime($date)));
return $this->db->count_all_results('tbl_attendance');
}
首先需要将日期解析为Y-m格式,然后可以使用此列作为条件
public function present_report_by_empid($user_id = null,$date = null)
{
$query='tbl_attendance.date_in';
$this->db->select('tbl_attendance.*,DATE_FORMAT(tbl_attendance.date_in,"%Y-%m") as date_parse');
$this->db->where('tbl_attendance.attendance_status', 1);
$this->db->where('tbl_attendance.user_id', $user_id);
$this->db->where('date_parse',date('Y-m',strtotime($date)));
return $this->db->count_all_results('tbl_attendance');
}
我相信你的话有错误
$this->db->where(date('Y-m',strtotime($query)), $date);
用值检查值
现在用这个替换你的函数
public function present_report_by_empid($user_id = null,$date = null)
{
$temp = explode("-",$date);
$query='tbl_attendance.date_in';
$this->db->where('tbl_attendance.attendance_status', 1);
$this->db->where('tbl_attendance.user_id', $user_id);
$this->db->where("YEAR(tbl_attendance.date_in)",$temp[0]);
$this->db->where("MONTH(tbl_attendance.date_in)",$temp[1]);
return $this->db->count_all_results('tbl_attendance');
}
试试看,它会起作用的。我相信你的思路有误
$this->db->where(date('Y-m',strtotime($query)), $date);
用值检查值
现在用这个替换你的函数
public function present_report_by_empid($user_id = null,$date = null)
{
$temp = explode("-",$date);
$query='tbl_attendance.date_in';
$this->db->where('tbl_attendance.attendance_status', 1);
$this->db->where('tbl_attendance.user_id', $user_id);
$this->db->where("YEAR(tbl_attendance.date_in)",$temp[0]);
$this->db->where("MONTH(tbl_attendance.date_in)",$temp[1]);
return $this->db->count_all_results('tbl_attendance');
}
试试看,它会成功的。请发布您正在获取的错误。表中的日期列名是什么?请看我已经发布了。..date\u in?你说的是?是啊…当然了,
请在表中公布你得到的错误日期列名是什么?看我已经公布了..日期?你说的是?耶…当然了中的date\u,如果运行此代码时出现任何错误,请告诉我。我将修复它,在not date\u parse中,列名是date\u,它仍然无法工作,因为日期格式是表字段的Y-m-d是的,我知道日期列tbl\u attention.date\u在我所做的工作中,我将DB date Y-m-d格式化为Y-m,并存储在虚拟列date\u parse中,然后在该列上设置条件尝试使用$this->DB->last\u query()调试从代码中获得的查询
并将其发布到此处,伙计,如果在运行此代码时出现任何错误,请告知我。我将在not date_parse中修复它的列名为date_,它仍然无法工作,因为日期格式是表字段的Y-m-d是的,我知道日期列tbl\u attention.date\u在我所做的工作中,我将DB date Y-m-d格式化为Y-m,并存储在虚拟列date\u parse中,然后在该列上设置条件尝试使用$this->DB->last\u query()调试从代码中获得的查询
然后贴在这里,伙计,我不是OP:D