TIMESTAMPDIFF() MySQLで機能します。
これにより、2つのTIMESTAMP
を渡すことができます。 またはDATETIME
値(またはDATE
MySQLが自動変換するため)、および差の基礎となる時間の単位。
MONTH
を指定できます 最初のパラメータの単位として:
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- 0
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- 1
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- 7
基本的に、パラメータリストの最初の日付から経過した月数を取得します。このソリューションは、うるう年だけでなく、毎月のさまざまな日数(28、30、31)を考慮します。
経過した月数の小数精度が必要な場合は、もう少し複雑ですが、その方法は次のとおりです。
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
)
startdate
およびenddate
テーブル内の2つの日付列からのものか、スクリプトからの入力パラメーターとしてかを問わず、日付パラメーターは次のとおりです。
例:
With startdate = '2012-05-05' AND enddate = '2012-05-27':
-- Outputs: 0.7097
With startdate = '2012-05-05' AND enddate = '2012-06-13':
-- Outputs: 1.2667
With startdate = '2012-02-27' AND enddate = '2012-06-02':
-- Outputs: 3.1935