我已存儲的日期在兩列,如:計算的時間差,當格式爲月YYYY
from | to
----------------------
January 2012 | March 2013
July 2011 | June 2013
我怎樣才能在幾個月在這兩個日期之間的差異?
我想要的輸出的第一行和爲第二排
我已存儲的日期在兩列,如:計算的時間差,當格式爲月YYYY
from | to
----------------------
January 2012 | March 2013
July 2011 | June 2013
我怎樣才能在幾個月在這兩個日期之間的差異?
我想要的輸出的第一行和爲第二排
您應該使用功能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
一個說明,雖然我不太明白你從哪裏得到和。此查詢在幾個月內給出from
和to
之間的差異,對於您的數據,它分別是14
和23
。爲了演示,我還增加了當前月份from
和to
,它確實計算爲0的差異。
它解決了我的問題。謝謝 ! – 2013-04-10 08:56:29
當你想用它進行計算時,這不是一個真正的存儲日期的好方法。爲什麼不使用'DATETIME'? – 2013-04-10 07:56:15
爲什麼'11'在第二排? – 2013-04-10 08:06:00
@JW因爲他不能沒有查詢:)他可能意味着從七月** 2012 **和計數應該是** 12 ** – 2013-04-10 08:12:33