首頁 > 資料庫 > mysql教程 > 如何在 MySQL 中組合單獨的日、月和年欄位來執行日期範圍比較?

如何在 MySQL 中組合單獨的日、月和年欄位來執行日期範圍比較?

Barbara Streisand
發布: 2024-12-24 11:58:18
原創
967 人瀏覽過

How Can I Combine Separate Day, Month, and Year Fields in MySQL to Perform Date Range Comparisons?

在MySQL 中組合日期欄位進行比較

在具有基於日期的搜尋過濾器的應用程式中,使用資料庫模式可能具有挑戰性將日期元件儲存在單獨的日、月和年欄位中。本文示範如何組合這些欄位並建立一個日期物件以與使用者指定的日期範圍進行比較。

考慮以下「日期」表結構:

CREATE TABLE `date` (
  `deposition_id` varchar(11) NOT NULL default '',
  `day` int(2) default NULL,
  `month` int(2) default NULL,
  `year` int(4) default NULL,
  PRIMARY KEY  (`deposition_id`)
);
登入後複製

建構一個日期根據這些字段,MySQL 提供了以下函數:

  • MAKEDATE():根據年份和月份建立DATETIME 對象,其中將日期設為1。
  • DATE_ADD():在 DATETIME 物件上新增指定的間隔(例如月或日)。

建立表示特定日期的日期對象,可以使用以下步驟:

  1. 使用MAKEDATE() 建立一個給定年份第一天的DATETIME 物件:

    MAKEDATE(year, 1)
    登入後複製
  2. 使用DATE_ADD()將月份加入DATETIME 物件:

    DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
    登入後複製
  3. 最後,使用下列指令將日期加入DATETIME 物件DATE_ADD():

    DATE_ADD(..., INTERVAL (day)-1 DAY)
    登入後複製

透過組合這些函數,可以從單獨的日、月和年字段中建構完整的日期物件。然後,此日期物件可用於日期範圍比較:
SELECT * FROM `date`
WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY)
BETWEEN '2013-01-01' AND '2014-01-01';
登入後複製

此查詢將擷取「日期」表中組合日期落在指定範圍內的所有記錄。透過利用 MAKEDATE() 和 DATE_ADD() 的組合,MySQL 使開發人員能夠有效地操作和比較日期,即使儲存在單獨的欄位中也是如此。

以上是如何在 MySQL 中組合單獨的日、月和年欄位來執行日期範圍比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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