我正在使用PHP / SQL等博客,我发现我认为对我的SQL知识来说过于先进(显然)。我正在创建一个存档部分,当发布帖子时,它会以UNIX时间戳格式存储其帖子的日期/时间。但是,我希望存档显示如下:
Date Year Post Count
-------- ---- ----------
November 2011 2
December 2011 1
我很容易理解:
Date Year Post Count
-------- ---- ----------
November 2011 2
November 2011 2
December 2011 1
希望你能看到我想要实现的目标。我目前的SQL语句是:
SELECT `post_date` FROM `blog_posts` ORDER BY `post_date` DESC
PHP处理大部分排序,我可以用PHP实现这一点,但我确信在SQL中有一种更简单的方法。
希望有人可以提供帮助。
答案 0 :(得分:1)
对于MySQL (5.5),它将接近以下:
SELECT MONTHNAME(post_date) AS month_col,
YEAR(post_date) AS year_col,
COUNT(*) AS num_posts
FROM blog_posts
GROUP BY YEAR(post_date), MONTH(post_date)
ORDER BY year_col, month_col DESC;
会回来:
December, 2011, 3
November, 2011, 2
December, 2010, 1
答案 1 :(得分:0)
我不知道您使用的是哪种SQL,但如果它是MySQL,则下面的内容应该有效。
SELECT post_date, COUNT(*)
FROM blog_posts
GROUP BY post_date / 86400
ORDER BY post_date DESC
86400来自24 * 60 * 60,一天中的秒数。