【问题标题】:SQL sorting and adding?SQL排序和添加?
【发布时间】:2023-03-27 11:38:01
【问题描述】:

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

年份:全年总收入 月份:总月收入 月份:总月收入 等等。 年份:全年总收入 月份:总月收入 月份:总月收入 等等。

并非每年每个月都有条目。我似乎无法正确显示日期值。到目前为止,我尝试使用它,但它不能正确显示月份,年份很好:

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>";
    }
  }
}

【问题讨论】:

  • 并不是说它与实际问题有任何关系,但无论哪种方式,都不要使用mysql_ 函数。请改用 PDO 或 MySQLi。
  • 您没有提到它如何无法正确显示月份。
  • 如果你想显示几个月,你可能需要做一个循环。但是,如果不知道数据库的内容,或者您​​为获得结果而执行的 SQL 查询,就没有真正的方法可以帮助您。
  • mysql_ 实际上是我从这个网站上取下来的,但是一旦它运行起来,我就不要去研究了。谢谢。
  • 这是当前输出,第一年的月份是正确的,但其他月份没有显示正确的月份。 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

标签: php html sql


【解决方案1】:
Select year (date) as pyear, month (date) as pmonth, sum (payment)
From table 
Group by pyear,pmonth

这可以帮助您按年和月获得付款,然后按您喜欢的方式放入数组中打印

【讨论】:

  • 问题在于日期以“yyyy-mm-dd”格式存储。所以我不相信这个查询会起作用。
  • 可以使用convert(smalldatetime,date_field,103)
  • @robby fyi 在 sql server 端解决数据问题要好得多;对于少量数据的大数据会更快,您可以尝试编程解决方案
【解决方案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

【讨论】:

    【解决方案3】:

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

    另一个选择是使用 PHP 丰富的日期格式函数库来简化您的代码,可以在此处找到 - http://php.net/manual/en/function.date.php

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多