Как выбрать последние 6 месяцев из таблицы новостей, используя MySQL - PullRequest
32 голосов
/ 20 января 2012

Я пытаюсь выбрать последние 6 месяцев записей в таблице, у меня есть столбец с именем datetime, и он в формате datetime mysql.

Я видел много способов, использующих интервал и другие методы -какой метод я должен использовать?Спасибо

Ответы [ 6 ]

103 голосов
/ 20 января 2012

Использование DATE_SUB

 .... where yourdate_column > DATE_SUB(now(), INTERVAL 6 MONTH)
11 голосов
/ 20 января 2012

Попробуйте:

select *
  from table 
 where your_dt_field >= date_sub(now(), interval 6 month);

Запрос читает: введите все записи в table, если поле, соответствующее дате ввода, новее 6 месяцев.

2 голосов
/ 28 июня 2017

Я попытался @ user319198 ответить, чтобы отобразить продажи за последние 6 месяцев (сумма), это сработало, но я столкнулся с одной проблемой в самом старом месяце, я не получаю сумму продаж за весь месяц.Результат начинается с эквивалентного текущего дня этого месяца.

Просто я хочу поделиться своим решением, если кто-то заинтересовался: -

yourdate_column > DATE_SUB(now(), INTERVAL 7 MONTH)
limit 6

Также было бы здорово, если у кого-то есть лучшее решениедля моего случая J.

1 голос
/ 30 октября 2018

Вы также можете использовать TIMESTAMPDIFF

    TIMESTAMPDIFF(MONTH, your_date_column, now()) <= 6 )
1 голос
/ 03 октября 2018

Для меня это выглядит как решение, так как я использую его с MariaDB, взгляните на предложение WHERE:

SELECT MONTH(yourTimestampOrDateColumn) AS MONTH, USER, ActionID, COUNT(*) AS TOTAL_ACTIONS, ROUND(SUM(totalpoints)) AS TOTAL_PTS
FROM MyTable
WHERE MONTH(yourTimestampOrDateColumn) BETWEEN MONTH(CURDATE() - INTERVAL 6 MONTH) AND MONTH(CURDATE())
GROUP BY MONTH;

queryResults

На изображении мы видим только месяцы, когда у пользователя были реальные данные, записанные в БД (таким образом, показывая только 4 месяца вместо 6).

Таким образом, этот месяц является 10-м (октябрь), 6 месяцев назад был 4-м месяцем (апрель), поэтому запрос будет искать этот интервал (от 4 до 10).

0 голосов
/ 14 ноября 2018

Вы можете получить данные за последние шесть месяцев, вычитая interval of 6 month из CURDATE() (CURDATE() - это функция MySQL, которая возвращает сегодняшнюю дату ).

SELECT * FROM table 
         WHERE your_date_field >= CURDATE() - INTERVAL 6 MONTH;

Или вы можетеиспользуйте оператор BETWEEN MySQL как ниже:

SELECT * FROM table 
         WHERE your_date_field BETWEEN CURDATE() - INTERVAL 6 MONTH AND CURDATE();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...