2013-04-10 51 views
1

我已存儲的日期在兩列,如:計算的時間差,當格式爲月YYYY

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

我怎樣才能在幾個月在這兩個日期之間的差異?

我想要的輸出的第一行和爲第二排

+1

當你想用它進行計算時,這不是一個真正的存儲日期的好方法。爲什麼不使用'DATETIME'? – 2013-04-10 07:56:15

+0

爲什麼'11'在第二排? – 2013-04-10 08:06:00

+1

@JW因爲他不能沒有查詢:)他可能意味着從七月** 2012 **和計數應該是** 12 ** – 2013-04-10 08:12:33

回答

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 

一個說明,雖然我不太明白你從哪裏得到和。此查詢在幾個月內給出fromto之間的差異,對於您的數據,它分別是1423。爲了演示,我還增加了當前月份fromto,它確實計算爲0的差異。

+0

它解決了我的問題。謝謝 ! – 2013-04-10 08:56:29