格式为月YYYY时,以月为单位计算日期差异

时间:2013-04-10 07:53:34

标签: mysql datediff

我已将日期存储在两列中,例如:

from          |   to
----------------------
January 2012  | March 2013    
July 2011     | June 2013

我怎样才能在几个月内得出这两个日期之间的差异?

我希望第一行的输出为 15 ,第二行的输出为 11

1 个答案:

答案 0 :(得分:3)

您应该使用函数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 。此查询在几个月内给出fromto之间的差异,对于您的数据,它分别为1423。为了演示,我还将当前月份添加为fromto,并确实计算为0差异。