【问题标题】:Listing blog entries by month按月列出博客条目
【发布时间】:2009-10-26 10:40:42
【问题描述】:

我正在编写自定义代码来创建博客。我需要归档页面按月列出所有博客条目。我想不出办法来做到这一点。 我想这应该不会太难,因为它是所有博客的共同特征。 表结构为(postid, posttitle, publishdate, .....)

【问题讨论】:

  • 虽然这相当简单,并且会有一个“标准”的 SQL 方法来执行此操作,但了解您使用的 RDBMS 会有所帮助。 SQL 服务器? MySQL?后格雷斯?甲骨文?还有什么?

标签: php sql blogs


【解决方案1】:

我不确定我是否理解这个问题,但如果您只需要每月所有帖子的数量,请使用如下查询:

SELECT DATE_FORMAT(publishdate, '%Y%m') AS publishmonth, count(*) AS entrycount
FROM entries GROUP BY DATE_FORMAT(publishdate, '%Y%m')

如果您想要特定月份的所有帖子:

SELECT * FROM entries WHERE publishdate > '2009-01' AND publishdate < '2009-02';

如果您想在单个页面上列出按月份分组的所有个帖子,只需选择按publishdate排序的帖子并在本地进行分组。

【讨论】:

    【解决方案2】:

    如果您的条目来自 SQL 数据库,最简单的方法是要求它使用 ORDER BY 为您执行排序。类似的东西

    select * from posts order by publishdate
    

    【讨论】:

      【解决方案3】:

      类似这样的伪代码:

      SELECT `publishdate` FROM `entries` ORDER BY DESC `publishdate` GROUP BY YEAR(`publishdate`), MONTH(`publishdate`);
      foreach ($dates as $date) {
          $date = mysql_real_escape_string($date)
          SELECT * FROM `entries` WHERE `publishdate` = $date
      }
      

      我认为。

      【讨论】:

      • 首先,这不起作用,因为一个月内所有帖子的发布日期都不相同。其次,SQL 查询不应该发生在这样的循环中。
      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多