8

如何获得特定月份的列价格总和。

日期列是 varchar(10),日期格式是欧洲 (dd-mm-yy)。

这是我的表的示例:

在此处输入图像描述

目前要选择我使用的所有价格总和:

case 'get':

            $q=mysql_real_escape_string($_GET['q']);
            $query="SELECT sum(price) FROM Fuel";

            $result = mysql_query($query);


            $json = array();
            while($row = mysql_fetch_array($result))
            {
                $json['price']=$row['price'];
            }
            print json_encode($json);




            mysql_close();


            break;

那么如何获得 09-2012 月份的列价格总和。

4

2 回答 2

10

首先更改date列的数据类型(记得适当地更新您的应用程序代码):

ALTER TABLE Fuel ADD newdate DATE;
UPDATE Fuel SET newdate = STR_TO_DATE(date, '%d-%m-%Y');
ALTER TABLE Fuel DROP date, CHANGE newdate date DATE FIRST;

那么你也能:

SELECT SUM(price) FROM Fuel WHERE date BETWEEN '2012-09-01' AND '2012-09-30'
于 2012-11-18T08:51:10.670 回答
5

这将为您工作:

SELECT 
  sum(price) 
FROM Fuel
WHERE datefield = 'somedate';

但是您必须注意在日期参数中输入的格式,因为它将作为字符串文字而不是日期对象进行比较。但是,您应该将这些日期存储在数据类型的列中DATE

更新:

如何使用 09 选择所有月份的总和?

要仅选择特定月份的记录,您可以使用 MySQL 函数MONTH,如下所示:

SELECT 
  SUM(price) 
FROM Fuel
WHERE MONTH(`date`) = 9;

SQL 小提琴演示

于 2012-11-18T08:44:42.030 回答