需要从该日期起仅提取年份和月份

Here my value inserted in to the table is like as follows,

`2017-01-01`,
`2017-01-02`,
`2017-01-03`,
`2017-01-04`,
`2017-01-05`,
`2017-01-06`. 

i need to fetch only year and month from that, for that i used my code like this

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');
}

My $date value is 2017-01 and when i gave like this am getting error like this SELECT COUNT(*) ASnumrowsFROMtbl_attendanceWHEREtbl_attendance.attendance_status= 1 ANDtbl_attendance.user_id= '1' AND1970-01= '2017-01'

I believe you have error in line

$this->db->where(date('Y-m',strtotime($query)), $date);

checking value with value,

For now replace your function with this,

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');
}

Give it a try, it will work.

First you need to parse the date into Y-m format then you can use this column as condition

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');
}