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

MySQL を使用して 2 つの日付間の年齢差を効率的に計算するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-09 18:17:41
オリジナル
169 人が閲覧しました

How to Efficiently Calculate the Age Difference in Years Between Two Dates Using MySQL?

MySQL の日付を使用して年の差を計算します

2 つの日付間の年の差を決定することは、MySQL の一般的なタスクです。この記事では、うるう年を考慮した効率的な単一式のソリューションを提供します。

問題ステートメント:

「YYYY-MM-DD」形式の 2 つの日付が与えられた場合、年の差を計算する必要があります。例:

  • 2011-07-20 - 2011-07-18 => 0 年
  • 2011-07-20 - 2010-07-20 => 1 年
  • 2011-06-15 - 2008-04-11 => 3 年間
  • 2011-06-11 - 2001-10-11 => 9 年

解決策:

<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
ログイン後にコピー

手順:

  • YEAR(date1) - YEAR(date2) 年の差を計算します。
  • DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d') 2 つの日付の月と日の部分を比較します。この式は、date1 の月の日が date2 の月の日より小さい場合は true (1) と評価され、それ以外の場合は false (0) と評価されます。
  • true または false の値 (1 または 0) を減算すると、結果がそれに応じて調整されます。

例:

次のクエリは、指定されたテスト ケースの年の差を計算します。

<code class="language-sql">SELECT date1, date2,
YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) AS diff_years
FROM (
    SELECT '2011-07-20' AS date1, '2011-07-18' AS date2 UNION ALL
    SELECT '2011-07-20', '2010-07-20' UNION ALL
    SELECT '2011-06-15', '2008-04-11' UNION ALL
    SELECT '2011-06-11', '2001-10-11' UNION ALL
    SELECT '2007-07-20', '2004-07-20'
) AS dates;</code>
ログイン後にコピー

出力:

<code>+------------+------------+------------+
| date1      | date2      | diff_years |
+------------+------------+------------+
| 2011-07-20 | 2011-07-18 |          0 |
| 2011-07-20 | 2010-07-20 |          1 |
| 2011-06-15 | 2008-04-11 |          3 |
| 2011-06-11 | 2001-10-11 |          9 |
| 2007-07-20 | 2004-07-20 |          3 |
+------------+------------+------------+</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート