首頁 > 資料庫 > mysql教程 > MySQL中如何準確計算兩個日期之間的年份差異?

MySQL中如何準確計算兩個日期之間的年份差異?

DDD
發布: 2025-01-09 18:39:41
原創
489 人瀏覽過

How to Accurately Calculate the Year Difference Between Two Dates in MySQL?

計算 MySQL 中日期之間的年份差

本指南示範了一種計算 MySQL 資料庫中兩個日期之間的年份差異的精確方法。 以下 SQL 表達式提供了精確的計算,處理潛在的閏年複雜度:

<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
登入後複製

此表達式的工作原理如下:

  1. 年份差異: YEAR(date1) - YEAR(date2) 計算初始年份差異。

  2. 月/日比較: DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d') 比較兩個日期的月和日部分。 此比較確定 date1 在一年中是否早於 date2

  3. 閏年調整: MySQL 將比較結果解釋為 1(真)或 0(假)。從初始年份差異中減去此結果可確保計算準確,並針對 date1 在同一年內按時間順序排列早於 date2 的情況進行調整。

範例:

讓我們用範例資料來說明:

<code class="language-sql">CREATE TABLE so7749639 (date1 DATE, date2 DATE);
INSERT INTO so7749639 VALUES
('2011-07-20', '2011-07-18'),
('2011-07-20', '2010-07-20'),
('2011-06-15', '2008-04-11'),
('2011-06-11', '2001-10-11'),
('2007-07-20', '2004-07-20');</code>
登入後複製

查詢:

<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 so7749639;</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中如何準確計算兩個日期之間的年份差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板