Переписывание функций даты в MySQL для SQLite - PullRequest
4 голосов
/ 29 февраля 2012

Пожалуйста, помогите мне переписать этот запрос из MySQL в формат SQLite:

SELECT MAX(pubdate) as pubdate, 
COUNT(DISTINCT post_id) AS count, 
DATE_FORMAT(pubdate,"%b-%y") as month 
FROM posts 
WHERE pubdate >= DATE_SUB(CURDATE(), INTERVAL 5 MONTH) 
GROUP BY month 
ORDER BY pubdate ASC

По сути, я хочу получить количество всех сообщений за последние 5 месяцев, сгруппированных по месяцам, но у меня возникают трудности при переписывании функций DATE_FORMAT(...) и DATE_SUB(...).

pubdate имеет стандартный формат MySQL TIMESTAMP (2011-06-21 20:05:01)

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012
SELECT MAX(pubdate) as pubdate, 
COUNT(DISTINCT post_id) AS count, 
strftime('%m-%Y',pubdate) as month
FROM posts 
WHERE pubdate >= datetime('now','-5 month')
GROUP BY month 
ORDER BY pubdate ASC

Самое близкое, что я могу сделать так, чтобы оно выглядело чистым. Тем не менее, это вернет формат '01 -1999' для month. Если вы хотите, чтобы это было «январь 99», вам понадобится какая-то грязная инструкция к регистру.

В данный момент у меня нет доступа к sqlite, поэтому этот код не был протестирован.

7 голосов
/ 29 февраля 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...