Php 月与月之和

Php 月与月之和,php,mysql,Php,Mysql,我想在PHP-MySQL中使用BETWEEN 例如,我有一张表: badge_id | balance_type | balance_amount | balance_month 110702 | aa | 250000 | January-2013 110702 | ab | 100000 | January-2013 110702 | aa | 100000 | Febru

我想在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
但它会把每个月的余额加起来


有什么建议吗?

这是因为您有一个字符串列来表示每月的余额。2013年8月至2013年9月期间,字母表基本上介于A和S之间。我不知道如何更好地描述它,这里缺乏英语技能。1月的J和2月的F介于A和S之间,所以MySQL会计算这些值。将列转换为日期

WHERE ... AND STR_TO_DATE(balance_month, '%M-%Y') BETWEEN '2013-08-01' 
  and '2013-09-30'

但是,如果我是你,我会去掉这个专栏,使用一个真正的日期专栏。否则,当你总是需要在上面使用str_to_date之类的函数时,就不能在上面使用索引。

不幸的是,所有月份都在2013年8月到2013年9月之间,因为你可能是在比较字符串而不是日期

在MySQL上,正确的日期具有或一个可派生类型,并应格式化为YYYY-MM-DD。

这将起作用

SELECT balance_type AS balance_type, SUM(balance_amount) AS value_sum FROM t_balance WHERE badge_id = '110702' && STR_TO_DATE(balance_month,'%M-%Y') BETWEEN '2013-08-01' and '2013-09-30' GROUP BY balance_type
在指定的数据范围内是否有多个平衡类型值?可能,但是,您能提供一些“2013年8月”和“2013年9月”之间的数据来检查吗?balance_month列的数据类型是什么?我为balance_month设置了varchar类型