Php SQL排序和添加?

Php SQL排序和添加?,php,html,sql,Php,Html,Sql,所以我一直在摸索这个,我觉得我错过了一些东西。基本上,我有一个充满用户信息的表格。我关心的两个领域是日期和付款。基本上,我正在尝试打印一种格式,如: Year: total year income Month: total month income Month: total month income ect. Year: total year income Month: total month income Month: total month income

所以我一直在摸索这个,我觉得我错过了一些东西。基本上,我有一个充满用户信息的表格。我关心的两个领域是日期和付款。基本上,我正在尝试打印一种格式,如:

Year: total year income Month: total month income Month: total month income ect. Year: total year income Month: total month income Month: total month income ect. 年份:全年总收入 月份:月总收入 月份:月总收入 发射型计算机断层扫描仪。 年份:全年总收入 月份:月总收入 月份:月总收入 发射型计算机断层扫描仪。 不是每年每个月都有条目。我似乎在正确显示日期值时遇到问题。到目前为止,我尝试使用此选项,但无法正确显示月份,年份也可以:

if ($results > 0){
  while($info = mysql_fetch_array($alist)) {
    if(substr($info['begin_date'],0,4) > $year){
      $year = substr($info['begin_date'],0,4);
      echo $year . "</br>";
      $month = substr($info['begin_date'],5,2);
      echo $month . "</br>";
    }
    if(substr($info['begin_date'],5,2) > $month){
      $month = substr($info['begin_date'],5,2);
      echo $month . "</br>";
    }
  }
}
if($results>0){
而($info=mysql\u fetch\u数组($alist)){
如果(substr($info['begin_date',0,4)>$year){
$year=substr($info['begin_date'],0,4);
echo$year.“
”; $month=substr($info['begin_date'],5,2); echo$month.“
”; } 如果(子项($info['begin_date'],5,2)>$MOUNT){ $month=substr($info['begin_date'],5,2); echo$month.“
”; } } }
这有助于您按年度和月份获得付款,然后将其放入数组中,以便根据需要打印


这有助于您按年度和月份获得付款,然后将其放入数组中,以便根据您的喜好进行打印

这将提供每年/每月的付款:

SELECT YEAR(STR_TO_DATE(date, '%Y-%m-%d')) as year
    , MONTH(STR_TO_DATE(date, '%Y-%m-%d')) as month
    , SUM (income)
FROM table 
GROUP BY 1,2

这应提供每年/每月的付款:

SELECT YEAR(STR_TO_DATE(date, '%Y-%m-%d')) as year
    , MONTH(STR_TO_DATE(date, '%Y-%m-%d')) as month
    , SUM (income)
FROM table 
GROUP BY 1,2

上面的许多答案说明了如何从MySQL中的日期数据类型提取年和月,这是一个有效的解决方案

另一个选择是使用PHP丰富的日期格式函数库来简化代码,可在此处找到-

例如:$year=substr($info['begin_date',0,4);变成

$year=date('Y',strotime($info['begin_date']);

上面的许多答案都说明了如何从MySQL中的日期数据类型提取年和月,这是一个有效的解决方案

另一个选择是使用PHP丰富的日期格式函数库来简化代码,可在此处找到-

例如$year=substr($info['begin_date',0,4);变成

$year=日期('Y',标准时间($info['begin\u date']))

这与实际问题无关,但无论如何,不要使用
mysql
函数。改用PDO或MySQLi。你没有提到它如何不能正确显示月份。如果你想显示几个月,你可能需要做一个循环。但是在不知道数据库内容或SQL的情况下你为得到结果所做的每一件事,都没有真正的方法来帮助你。mysql_uu实际上是我从这个网站上取下来的东西,但我会在它运行后进行研究。谢谢。这是当前的输出,头几年的月份是正确的,但其他月份没有显示正确的月份。2007 01 02 03 06 07 08 11 12 2008 03 12 2009 01 10 11 12 2010 02 08 09 11 12 2011 01 07 08 2012 07 08 10 12这与实际问题无关,但无论如何,都不要使用
mysql\uuuu
函数。改用PDO或MySQLi。您没有提到它如何无法正确显示月份。如果要显示几个月,可能需要进行循环。但没有知道数据库的内容,或者你为获得结果而执行的SQL查询,没有真正的方法可以帮助你。mysql_uu是我从这个网站上获得的东西,但我会在它运行后进行调查。谢谢。这是当前的输出,头几年的月份是正确的,但其他月份没有显示正确的月份s、 2007 01 02 03 06 07 08 11 12 2008 03 12 09 01 10 11 12 2010 02 08 09 11 12 2011 01 07 08 2012 07 08 10 12问题是日期是以“yyy-mm-dd”格式存储的。因此我认为查询不起作用。它可以使用
转换(smalldatetime,date\u字段,103)
@robby fyi在sql server端解决您的数据问题要好得多;对于大数据,处理少量数据的速度会快得多。您可以尝试编程解决方案。问题是,日期以“yyyy-mm-dd”格式存储。因此,我认为该查询不起作用。请使用
转换(smalldatetime,date_field,103)
@robby fyi在sql server端解决数据问题要好得多;对于少量数据,bigdata的速度会快得多。您可以尝试编程解决方案