MySQL 中精確的月份差異計算
MySQL 提供了一個不可或缺的函數TIMESTAMPDIFF() 來計算兩個日期之間的月份數。它消除了與不同月份長度和閏年相關的併發症。
SELECT TIMESTAMPDIFF(MONTH, '2012-03-08', '2012-08-01'); -- Outputs: 4
精度增強
為了獲得更高的精度,可以採用更複雜的方法:
SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH )
此公式通過計算剩餘天數(月差後)作為 a的分數來增加精確度
範例
WITH startdate AS '2012-03-08', enddate AS '2012-04-15' SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ); -- Outputs: 1.2333
此結果顯示兩個日期之間存在 1 個月和約 23.33% 的月份差異。
以上是如何在MySQL中計算精確的月份差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!