phpmysql只从列中选择月份



我遇到了这个问题,找不到解决办法。任何帮助都将不胜感激。

我有一张桌子,上面有一系列的柱子,其中一个名叫PostDate。它包含以下数组,我将其输出为表,以便更好地查看。

PostDate
0000-00-00
2013-01-08 
2013-01-10 
2013-01-11 
2013-01-15 
2013-01-16 
2013-01-18 
2013-01-18 
2013-01-18 
2013-01-19 
2013-01-19 
2013-01-23 
2013-01-23 
2013-01-24 
2013-01-26 
2013-01-29 
2013-01-29 
2013-01-29 
2013-01-30 
2013-01-31 
2013-01-31 
2013-02-01 
2013-02-02 
2013-02-02 

代码是这样的。

$scorequerymonth=
   "SELECT PostDate 
    FROM tablename 
    WHERE AgentID=$agent 
    ORDER BY PostDate"; 
$scoreresultmonth=mysql_query($scorequerymonth, $scoreconnection) or die('Could not connect agent: ' . mysql_error());

$scoretotwos=mysql_num_rows($scoreresultmonth);
echo "<br>";
echo "scoretotwos: " . $scoretotwos;  
echo "<br>";
echo "<table border='1'><tr>";
for($i = 0; $i<mysql_num_fields($scoreresultmonth); $i++)
{
echo "<th>".mysql_field_name($scoreresultmonth, $i)."</th>";
}
echo "</tr>";
while($row = mysql_fetch_array($scoreresultmonth))
{
    echo "<tr>";
    for($i = 0; $i < mysql_num_fields($scoreresultmonth); $i++)
    {
        echo "<td>". $row[$i] ."</td>"; 
    }   
    echo "</tr>";
    }
echo "</table>";
echo "<br>";

我想完成的是分离1月、2月等的行数。。。我试过这个查询,但我只得到了本月的01,02。

$scorequerymonth=
    "SELECT DATE_FORMAT(PostDate, '%m') 
     FROM tablename 
     WHERE AgentID=$agent 
     ORDER BY PostDate";

我想知道的是,是否有人能告诉我如何查找或计算01或02或其他月份,以及存在的行数。

我基本上只需要给定月份的总行数。

任何帮助都将是极好的。

你差不多到了。您需要添加一个GROUP BY子句,并返回一个聚合(例如COUNT(1)SUM(1)):

SELECT DATE_FORMAT(t.PostDate,'%m') AS post_month
     , COUNT(1) AS count_for_post_month
  FROM tablename t
 WHERE t.AgentID=$agent
 GROUP BY post_month

请注意,通过只返回日期值中的'01'和'02',这将在每个日期值中组合多个年份。例如,"01"的"计数"将包含从所有年份的1月开始的匹配行计数,所有行组合在一起:"2011-01"、"2012-01"、"2013-01"

通常的模式是包括年份,并获得特定日历月的计数:

SELECT DATE_FORMAT(t.PostDate,'%Y%m') AS post_yyyymm

相关内容

  • 没有找到相关文章