Я хочу получить все предыдущие записи из моей таблицы mysql из выбранного месяца и года. например, если мой выбранный месяц и год составляет 08-2018, тогда запрос должен отображать все предыдущие записи с августа 2018 года.
Я пробовал этот mysql-запрос как:
"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";
но он не включал запись, когда у меня месяц больше 8, например, 09-2017 и т.д.
Вы можете попробовать более простой способ:
Получение записей created_date меньше 1-й даты выбранного месяца и года.
если ваше поле created_date
имеет тип Date
вы можете попробовать следующее:
"select * form tblusers where created_date < '2018-08-01'"
в случае, если ваше поле created_date
имеет тип Datetime
вы можете попробовать следующее:
"select * form tblusers where created_date < '2018-08-01 00:00:00'"
Надеюсь, что это поможет вам :
Используйте класс построителя запросов CI следующим образом:
$year = '2018';
$month = '08';
$query = $this->db->from('tblusers')
->where('MONTH(created_date) <', $month)
->where('YEAR(created_date) <=', $year)
->get();
if ($query->num_rows() > 0)
{
print_r($query->result());
}
echo $this->db->last_query();
Лучший способ использовать вот так:
$date = '2017-09-01';
$query = $this->db->from('tblusers')
->where('DATE(created_date) >=', $date)
->get();
Дополнительные сведения: https://codeigniter.com/user_guide/database/query_builder.html
Я предпочитаю создавать составное значение
select * from tblusers where
(year(created_date) * 12 + month(created_date))
<= 2018 * 12 + 8;
SELECT * FROM tblusers WHERE YEAR(created_date)<='2018' AND MONTH(created_date)<='08';
Попробуйте это, чтобы равняться месяцу, а также + у вас есть ошибка в вашем синтаксисе sql в слове "from" (но я предполагаю, что это не ошибка, пока вы получаете результаты.
Ваш запрос работает правильно, основываясь на том, что вы там установили. Он не должен возвращать результаты выше, чем в течение 08 месяцев, что на самом деле ваше состояние:
month(created_date)<'08'
это означает, что если ваше значение равно 09,10,11... оно не проходит ваше состояние, так как оно выше 08.
Попробуй это:
select * form tblusers where month(created_date)<8 and year(created_date)<=2018