我想在我的 PHP - MySQL 中使用 BETWEEN
。
例子我有表:
badge_id | balance_type | balance_amount | balance_month
110702 | aa | 250000 | January-2013
110702 | ab | 100000 | January-2013
110702 | aa | 100000 | February-2013
110702 | ab | 90000 | February-2013
110702 | aa | 100000 | March-2013
110702 | ab | 110000 | March-2013
现在我想对从 2013 年 1 月到 2013 年 2 月的余额月求和
。
SELECT balance_type AS balance_type, SUM(balance_amount) AS value_sum
FROM t_balance
WHERE badge_id = '110702' && balance_month BETWEEN 'August-2013'
and 'September-2013'
GROUP BY balance_type
但它将对所有 balance_month 求和。
有什么建议吗?
最佳答案
这是因为您有 balance_month 的字符串列。 BETWEEN August-2013 and September-2013
基本上是字母表中的BETWEEN A AND S
(不知道如何更好地描述它,这里缺乏英语技能)。一月的 J 和二月的 F 在 A 和 S 之间,因此 MySQL 将它们计算在内。将您的列转换为日期
WHERE ... AND STR_TO_DATE(balance_month, '%M-%Y') BETWEEN '2013-08-01'
and '2013-09-30'
但是,如果我是您,我会去掉该列并使用真实的日期列。否则,当您始终必须在其上使用类似 str_to_date() 的函数时,无法在其上使用索引。
关于一个月之间的 PHP MySQL SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18352829/