Php MySQL:计算有特定日期的列中所有数字的总和
如何获得特定月份的列价格之和 日期列是varchar(10),日期格式是European(dd-mm-yy) 以下是我的表格示例: 当前选择我使用的所有价格总和:Php MySQL:计算有特定日期的列中所有数字的总和,php,mysql,sum,Php,Mysql,Sum,如何获得特定月份的列价格之和 日期列是varchar(10),日期格式是European(dd-mm-yy) 以下是我的表格示例: 当前选择我使用的所有价格总和: case 'get': $q=mysql_real_escape_string($_GET['q']); $query="SELECT sum(price) FROM Fuel"; $result = mysql_query($query);
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;
那么,我如何获得2012年9月的列价格之和。这将适用于您:
SELECT
sum(price)
FROM Fuel
WHERE datefield = 'somedate';
但是您必须注意在日期参数中输入的格式,因为它将作为字符串文本而不是日期对象进行比较。但是,您应该将这些日期存储在数据类型为DATE
的列中
更新:
我如何选择09的所有月份的总和 要仅选择特定月份的记录,可以使用MySQL函数,如下所示:
首先更改
日期
列的数据类型(请记住适当更新应用程序代码):
ALTER TABLE Fuel ADD newdate;
更新燃料组newdate=STR_至_日期(日期,%d-%m-%Y');
更改表格燃油下降日期,先更改新日期;
然后你可以:
从日期介于“2012-09-01”和“2012-09-30”之间的燃料中选择总和(价格)
那么,这里的问题是什么?那么,我如何获得2012年9月的列价格之和。它不是日期字段。它唯一的名字是“日期”。这是一个varchar(10),它还能工作吗?如果我更改它的数据类型,我会丢失所有的值吗?@jQuerybeast-尝试创建一个带有日期对象的新表。然后使用带有str_to_date
函数的INSERT-INTO-newtable-SELECT from-oldtable
,从这些字符串值中为您提供日期对象。我如何选择所有月份的总和?因为我的日期是2012年9月12日。对于您的示例,我只能选择dd mm yyyyWHERE DATEFILD格式的特定日期的总和,如“%-09-%”;将为您提供文本日期为格式的09个月。dd-mm-yyyy@jQuerybeast:它将用MySQL的内部类型之一替换原始字符串列,因此MySQL将识别数据并将其作为日期进行处理,使您能够执行上述操作。这些值将被转换(通过UPDATE
操作)。在一个附带问题上,我可以更改日期的格式吗?目前是yy毫米-dd@jQuerybeast:在内部,MySQLDATE
键入3字节整数,打包为YYYY×16×32+MM×32+DD
;它以'YYYY-MM-DD'
格式显示它们。如果希望以其他格式检索值,请使用MySQL函数。
SELECT
SUM(price)
FROM Fuel
WHERE MONTH(`date`) = 9;