2016-01-04 4 views
1

Я посещаю пользователей за все месяцы. Теперь я просто хочу получить данные только за текущий месяц.Как получить данные за текущий месяц из разных дат данных?

Я искал в Интернете и выяснил

даты ('F Y');

возвращает текущий месяц и год. Но я не знаю, как я могу использовать его для извлечения за текущий месяц данные

Мой код модели:

public function monthly_login() 
{ 

     $this->db->select('*'); 

     $this->db->from('daily_data2'); 

     $this->db->where('date_data', date('F Y')); 

     $this->db->where('entry >','100'); 

     $this->db->order_by("date_data","ASC"); 

     $this->db->join('users', 'users.emp_id = daily_data2.emp_id','inner'); 

     $query = $this->db->get(); 


     echo $this->db->last_query(); 
     $res = $query->result();   

     return $res; 

} 

возвращает этот запрос:

SELECT * FROM (`daily_data2`) INNER JOIN `users` ON `users`.`emp_id` = `daily_data2`.`emp_id` WHERE `date_data` = 'January 2016' AND `entry` > '100' ORDER BY `date_data` ASCarray(0) { } 

Теперь в моей базе данных я есть поле под названием data_data, который имеет дату следующим образом:

2015-11-04 13:29:32

Итак, каким должен быть мой запрос, который извлекает только данные за текущий месяц.

+4

Заменить '$ this-> db-> где ('date_data', дата ('F Y'));' вместе с '$ this-> db-> где ('MONTH (date_data)', date ('m')); ' –

+0

Спасибо @Uchiha это работает – Rajan

+0

Использование функций на данных в соответствии с условием фильтрации - ужасный подход в терминах SQL. Поэтому, когда этот вопрос задавался много раз раньше, это не обязательно лучший ответ, который был выбран. –

ответ

3

Пожалуйста, замените функцию ниже код:

public function monthly_login() 
{ 

     $this->db->select('*'); 
     $this->db->from('daily_data2'); 
     $this->db->where('MONTH(date_data)', date('m')); //For current month 
     $this->db->where('YEAR(date_data)', date('Y')); // For current year 
     $this->db->where('entry >','100'); 
     $this->db->order_by("date_data","ASC"); 
     $this->db->join('users', 'users.emp_id = daily_data2.emp_id','inner'); 
     $query = $this->db->get(); 


     echo $this->db->last_query(); 
     $res = $query->result();   
     return $res; 

    } 
+1

вы также можете сделать это с помощью '$ this-> db-> где ('MONTH (date_data)', MONTH (NOW());' mysql-подход –

+0

@DishaV. Как получить последнюю неделю? $ This-> db-> где ('WEEK (date_data)', WEEK (NOW()) – Rajan

+0

или в прошлом месяце ?? вместо текущего месяца – Rajan

Смежные вопросы