代码之家  ›  专栏  ›  技术社区  ›  Yanki Twizzy

按月对数据库结果对象(数组)排序

  •  0
  • Yanki Twizzy  · 技术社区  · 14 年前

    我有一个数据库,其中有新闻稿条目,我想按月份安排。我的数据库有以下字段id、title、description和date。日期是完整的日期,例如2007-02-01 15:26:02。我想要的是按照相应的月份安排所有的时事通讯,例如我想要这样的东西

    2010年11月
    通讯标题
    通讯标题
    ... 直到2010年11月通讯的标题全部打印出来

    2010年12月
    通讯标题
    ... 直到2010年11月通讯的标题全部打印出来

    等等。

    请有人帮助我的代码,将实现这一点或给我一个想法如何进行。

    4 回复  |  直到 14 年前
        1
  •  2
  •   J V    14 年前
    SELECT * FROM db ORDER BY MONTH(date) AS 'd' desc GROUP BY MONTH(date)
    

    这是您正在寻找的查询,其余的都是非常基本的php/sql,因此您应该能够查找指南或其他东西并应用它。

        2
  •  0
  •   mck89    14 年前

    尝试此查询:

    SELECT CONCAT(MONTHNAME(date), ' ', title) as title FROM newsletter ORDER BY date desc;
    

    然后从结果中得到“title”字段

        3
  •  0
  •   andyface    14 年前

    http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

    这个函数应该可以帮助你做你想做的事情。你可以用它来获取特定年份的时事通讯,然后按月订购。

    从日期格式(新闻日期,'%Y')='2009'按日期顺序格式(新闻日期,'%m')ASC

        4
  •  0
  •   Dan Grossman    14 年前

    这是属于PHP代码的显示逻辑。只要您选择按日期排序的新闻稿,您只需要一行或两行代码,在循环并打印新闻稿标题时显示“如果我已经显示了该月名称,则不再显示该月名称”。在查询中,人们告诉您按月份进行排序或分组,这是错误的做法。