首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 日期處理速查筆記:常用函數與實戰範例

     編輯:MySQL 綜合教學

MySQL 日期處理核心語法速查

在資料庫開發中,日期時間的運算與篩選是高頻需求。MySQL 提供了豐富的內建函數,掌握核心語法能大幅提升查詢效率。以下整理實務上最常用的日期處理模式,供快速參考。

1. 篩選「今天」的資料

利用 CURDATE() 取得當前日期(不含時間),搭配 DATE() 將欄位截取為日期部分進行比對:

SELECT * FROM `table_name` WHERE DATE(`datetime_column`) = CURDATE();

這寫法能正確命中索引(若欄位有索引),避免隱含轉換導致全表掃描。

2. 同時取得「現在」與「昨天同一時間」

使用 NOW() 取得完整日期時間,配合 DATE_SUB() 扣減間隔,再用 DATE_FORMAT() 格式化輸出:

SELECT 
    DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS `now`,
    DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%s') AS `yesterday`;

進階技巧:若需「零點零分」作為當日邊界,可改用 CURDATE() 直接運算:

SELECT 
    CURDATE() AS `today_start`,
    DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS `yesterday_start`;

3. 常用日期間隔單位對照表

單位關鍵字說明
SECOND / MINUTE / HOUR秒 / 分 / 時
DAY / WEEK / MONTH日 / 週 / 月
QUARTER / YEAR季 / 年
SECOND_MICROSECOND秒.微秒(複合單位)

複合單位如 INTERVAL '1:30' HOUR_MINUTE 表示 1 小時 30 分鐘,靈活應對精細運算需求。

4. 實務建議

  • 避免在 WHERE 欄位上套用函數:WHERE DATE(col) = ... 會使索引失效,大表建議改用範圍查詢 WHERE col >= '2024-01-01' AND col < '2024-01-02'。
  • 時區一致性:應用層、資料庫、作業系統時區應保持一致,避免 NOW() 與 UTC_TIMESTAMP() 混用造成邏輯錯誤。
  • 格式化僅用於輸出:DATE_FORMAT() 耗能較高,僅在最終 SELECT 列表使用,勿用於 JOIN 或 WHERE 條件。

掌握這幾組核心模式,即可應對 90% 的日期處理場景,減少試錯時間,專注業務邏輯開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved