我已将日期存储在两列中,例如:
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 差异。to
14
23
from
to