0

在我开始之前,我想说我将这个问题发布为更多的讨论而不是问题问题。

在我的数据库中,我的新闻帖子可以说是 3 列(ID、标题、日期)。如果 Id 和 title 是自解释的,则日期存储在 mktime() 值中,即自 1970 年 1 月 1 日以来经过的秒数。

现在我想做的是建立一个存档链接,将显示为

  • 2009 年 7 月
  • 2009 年 6 月
  • 2009 年 3 月
  • 2009 年 2 月
  • 2008 年 12 月

请注意,没有显示没有帖子的月份。

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

  1. 从当月的最后一天开始
  2. 并获取当月第一天的值
  3. 对 date >= First_Day_Seconds AND date <= Last_Day_Seconds 的帖子执行 MySQL COUNT Query/mysql_num_rows
  4. 显示或将值放入数组
  5. 执行另一个查询以检查是否找到更多值 WHERE date < First_Day_Seconds (如果没有找到行则中断)

现在以上只是我头顶上的东西。但是,如果您有任何想法可以加快此过程,请分享。

会提前说,日期需要是mktime格式

4

2 回答 2

2

我建议使用数据库“本机”时间格式,但它也适用于 UNIX 时间戳。

你可以简单地做:

SELECT DISTINCT FROM_UNIXTIME(date, '%M %Y') FROM posts;

可以选择使用WHERE将日期限制为过去或未来日期的子句。可能是一个ORDER很好的衡量标准。这应该是几乎所有需要的,让数据库做尽可能多的工作。

如果您需要更多格式选项,请选择日期"%Y-%m"并在 PHP 中对其进行格式设置:

date($myCustomFormat, strtotime("$date-01"));
于 2009-07-27T06:26:07.583 回答
0

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

"SELECT *,content_id,COUNT(content_id) AS itemCount FROM content_mast GROUP BY DATE_FORMAT(date_upload,'%Y') DESC";

现在使用可以使用此查询来获取当年的月份

$tday = date("Y", $datetime);
$s1="select * from content_mast where DATE_FORMAT(date_upload,'%Y')=$tday";
于 2017-11-21T12:04:55.987 回答