1

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

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

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

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

4

1 回答 1

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

不过请注意:我不太明白您从哪里得到1511。此查询给出了月份之间的差异from,对于您的数据,它分别是和。只是为了演示,我还将当前月份添加为和,它确实计算为 0 差异。to1423fromto

于 2013-04-10T08:27:55.933 回答