我已将日期存储在两列中,例如:
from          |   to
----------------------
January 2012  | March 2013    
July 2011     | June 2013
我怎样才能得到这两个日期在几个月内的差异?
我希望第一行的输出为15,第二行的输出为11
您应该使用函数str_to_date()将字符串转换为实际DATE类型。之后,您可以period_diff()用来计算月份的差异,但您必须将日期转换date_format()为受支持的格式period_diff(令人困惑的是,它不是日期)。
最终的 SQL 是(SQLFiddle Demo):
SELECT period_diff(
    date_format(str_to_date(`to`,   '%M %Y'), '%Y%m'),
    date_format(str_to_date(`from`, '%M %Y'), '%Y%m'))
FROM mytable
不过请注意:我不太明白您从哪里得到15和11。此查询给出了月份之间的差异from,对于您的数据,它分别是和。只是为了演示,我还将当前月份添加为和,它确实计算为 0 差异。to1423fromto