2 つの日付フィールド間の 1 か月間の間隔を計算すると、一般的な問題が発生します。 MySQLでの挑戦。 1 つのアプローチでは、日付を Unix タイムスタンプに変換し、それを 1 か月の秒数 (2,592,000) で割って、最も近い整数に切り上げます。
ただし、より効率的な解決策があります。TIMESTAMPDIFF( ) 関数。 TIMESTAMPDIFF() を使用すると、2 つの TIMESTAMP、DATETIME、または DATE 値を比較し、その差に必要な時間単位を指定できます。
月単位の差を取得するには、最初のパラメーターで単位として MONTH を指定します。
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04'); -- Outputs: 0
TIMESTAMPDIFF() は、さまざまな月の長さを自動的に考慮し、閏年を考慮するため、手動で日付を設定する必要がなくなります。
精度を高めるために、次の式を組み込むことができます:
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 )
この式は、1 か月間の差異を 10 進数で表現し、より詳細な粒度を可能にします。
以上がMySQL を使用して 2 つの日付間の月の差を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。