我已将日期存储在两列中,例如:
from | to
----------------------
January 2012 | March 2013
July 2011 | June 2013
我怎样才能在几个月内得出这两个日期之间的差异?
我希望第一行的输出为 15 ,第二行的输出为 11
答案 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 。此查询在几个月内给出from
和to
之间的差异,对于您的数据,它分别为14
和23
。为了演示,我还将当前月份添加为from
和to
,并确实计算为0差异。