My Sql Query для получения всех предыдущих записей из выбранного месяца и года

0

Я хочу получить все предыдущие записи из моей таблицы mysql из выбранного месяца и года. например, если мой выбранный месяц и год составляет 08-2018, тогда запрос должен отображать все предыдущие записи с августа 2018 года.

Я пробовал этот mysql-запрос как:

"select * form tblusers where year(created_date)<=2018 and month(created_date)<'08'";

но он не включал запись, когда у меня месяц больше 8, например, 09-2017 и т.д.

Теги:
codeigniter
codeigniter-3

5 ответов

1
Лучший ответ

Вы можете попробовать более простой способ:

Получение записей 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'"
  • 1
    Оба приведенных выше запроса будут возвращать один и тот же результат. MySQL будет выполнять неявное преобразование в правильный тип данных. И да, это самый простой способ.
1

Надеюсь, что это поможет вам :

Используйте класс построителя запросов 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

  • 0
    сэр, если мой ответ поможет вам, пожалуйста, не стесняйтесь проверить его зеленым цветом и сделать upvote также
0

Я предпочитаю создавать составное значение

select * from tblusers where 
(year(created_date) * 12 +  month(created_date))
<= 2018 * 12 + 8;
0
SELECT * FROM tblusers WHERE YEAR(created_date)<='2018' AND MONTH(created_date)<='08';

Попробуйте это, чтобы равняться месяцу, а также + у вас есть ошибка в вашем синтаксисе sql в слове "from" (но я предполагаю, что это не ошибка, пока вы получаете результаты.

Ваш запрос работает правильно, основываясь на том, что вы там установили. Он не должен возвращать результаты выше, чем в течение 08 месяцев, что на самом деле ваше состояние:

month(created_date)<'08' 

это означает, что если ваше значение равно 09,10,11... оно не проходит ваше состояние, так как оно выше 08.

0

Попробуй это:

select * form tblusers where  month(created_date)<8 and year(created_date)<=2018

Ещё вопросы

Сообщество Overcoder
Наверх
Меню