2015-05-22 5 views
-2

У меня есть база данных MySQL для страницы блога, над которой я работаю. Мне нужно немного помочь реализовать архивное меню, которое я имею в виду.MySQL выбирает последние шесть месяцев, затем последние годы

В базе данных DB есть столбец «Дата» в формате временной метки. Я хочу выбрать последние шесть месяцев публикации статьи. Мой вопрос в том, как я мог выбрать последние шесть записей из столбца «Дата», которые имеют другое значение месяца. Запрос должен игнорировать дату и время, только месяц имеет значение.

Одна из идей, которые у меня были, заключалась в том, чтобы добавить еще одну колонку в БД, которая хранит только значения года и месяца. Из них я мог бы сделать «Выбор отличия от лимита« MonthYear »6: Согласитесь ли вы, что это работает?

После того, как я выбрал эти месяцы, для всех старых статей я хочу делать то же самое в течение многих лет. все годы, в которых статьи были опубликованы, за исключением тех лет, которые Allready охватываемым предыдущего выбора monthwise?

Извините, если вопрос немного сбивает с толку, я надеюсь, вы понимаете это и может мне помочь.

+2

Вопрос немного запутан. Я УВЕРЕН, что вы можете задавать менее запутывающий вопрос, возможно, со ссылкой на рекомендации SO и/или предыдущие вопросы. – Strawberry

ответ

-1

вы можете используйте ROW_NUMBER для достижения этой цели.

SELECT ROW_NUMBER() OVER(PARTITION BY Month(Date) ORDER BY Month(Date) DESC) AS ArticleOrder 
,ArticleID 
, etc 
FROM YourTable 
-1

Запрос в течение нескольких месяцев. Возвращает в формате «год-месяц».

SELECT DATE_FORMAT(`Date`,'%Y-%m') m FROM `table` GROUP BY m ORDER BY m DESC LIMIT 6 
Смежные вопросы