ホームページ >データベース >mysql チュートリアル >MySQL で 2 つの日付間の月の差を効率的に計算するにはどうすればよいですか?

MySQL で 2 つの日付間の月の差を効率的に計算するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-26 18:23:12895ブラウズ

How Can I Efficiently Calculate the Month Difference Between Two Dates in MySQL?

MySQL を使用した日付間の月の差の計算

問題:

MySQL の 2 つの日付フィールド間の月数の決定は一般的なタスクです。ただし、Unix タイムスタンプと手動計算の使用は面倒な場合があります。

解決策:

TIMESTAMPDIFF() 関数:

MySQL月の差を簡素化する TIMESTAMPDIFF() 関数を提供します計算。構文は次のとおりです:

TIMESTAMPDIFF(unit, startdate, enddate)

ここで:

  • unit は時間の単位です ('MONTH' など)。
  • startdate と enddate は日付または日時の値です。

向け例:

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- Outputs: 0

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- Outputs: 1

精度のある月の差:

10 進精度で月の差を計算するには、次の式を使用します:

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)

この式は日数と閏を補正しますyears.

例:

startdate = '2012-05-05', enddate = '2012-05-27'
-- Outputs: 0.7097

startdate = '2012-05-05', enddate = '2012-06-13'
-- Outputs: 1.2667

startdate = '2012-02-27', enddate = '2012-06-02'
-- Outputs: 3.1935

TIMESTAMPDIFF() 関数と精度の公式を使用すると、MySQL の日付間の月の差を簡単に計算できます。

以上がMySQL で 2 つの日付間の月の差を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。