Если вы собираетесь агрегировать только по годам и месяцам, то не имеет смысла выбирать полную дату, которая также будет включать компонент дня (и, возможно, времени). Причина, по которой это не имеет смысла, заключается в том, что MySQL неясно, какой день вы хотите выбрать (данный год и месяц могут иметь много разных значений дня). Скорее всего, правильным решением здесь будет просто выбрать тот же вызов DATE_FORMAT
, который указан в предложении GROUP BY
:
function get_chart_income() {
$sql <- "SUM(income.amount) AS chart_total_income, DATE_FORMAT(income.created_at, '%Y-%m') AS created_at";
$this->db->select($sql);
$this->db->group_by('created_at');
$this->db->order_by('created_at');
$this->db->limit(9);
return $this->db->get('income')->result_array();
}