归档生成器PHP

归档生成器PHP,php,mysql,database-design,architecture,archive,Php,Mysql,Database Design,Architecture,Archive,在我开始之前,我想说我把这个问题贴出来更多的是讨论,而不是问题 在我的数据库中,我有3列(Id、标题、日期)的新闻帖子。当Id和标题为自显式时,日期存储在mktime()值中,换句话说,是自1970年1月1日以来经过的秒数 现在我想做的是构建一个存档链接,它将显示为这样 2009年7月 2009年6月 2009年3月 2009年2月 2008年12月 注意:不显示没有职位的月份 现在作为最初的想法,我在想 从当月的最后一天开始 并获取当月第一天的值 对日期>=First\u Day\u Se

在我开始之前,我想说我把这个问题贴出来更多的是讨论,而不是问题

在我的数据库中,我有3列(Id、标题、日期)的新闻帖子。当Id和标题为自显式时,日期存储在mktime()值中,换句话说,是自1970年1月1日以来经过的秒数

现在我想做的是构建一个存档链接,它将显示为这样

  • 2009年7月
  • 2009年6月
  • 2009年3月
  • 2009年2月
  • 2008年12月
注意:不显示没有职位的月份

现在作为最初的想法,我在想

  • 从当月的最后一天开始
  • 并获取当月第一天的值

  • 对日期>=First\u Day\u Seconds和日期的帖子执行MySQL COUNT Query/MySQL\u num\u rows我建议使用数据库“原生”时间格式,但它也适用于UNIX时间戳

    您可以简单地执行以下操作:

    SELECT DISTINCT FROM_UNIXTIME(date, '%M %Y') FROM posts;
    
    可选择使用
    WHERE
    子句将日期限制为过去或未来日期。可能是一个
    ORDER
    子句被抛出,以便更好地度量。这应该是所有需要的,让数据库做尽可能多的工作

    如果需要更多格式选项,请选择日期,改为使用
    “%Y-%m”
    并用PHP格式化:

    date($myCustomFormat, strtotime("$date-01"));
    

    您可以使用此查询获取年份

    "SELECT *,content_id,COUNT(content_id) AS itemCount FROM content_mast GROUP BY DATE_FORMAT(date_upload,'%Y') DESC";
    
    now use可以使用此查询获取当年的月份

    $tday = date("Y", $datetime);
    $s1="select * from content_mast where DATE_FORMAT(date_upload,'%Y')=$tday";
    

    做得好。。。我刚刚运行了这个查询,哇!哦,有两个人喜欢这个D