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

MySQL 日期時間函數大全:UNIX_TIMESTAMP、FROM_UNIXTIME、DATEDIFF、DATE_ADD 等常用函數詳解

     編輯:MySQL 綜合教學

MySQL 日期時間函數完整參考

Unix 時間戳轉換

  • UNIX_TIMESTAMP() → 當前秒數(從 1970-01-01 UTC)。
  • UNIX_TIMESTAMP('2023-01-01 12:00:00') → 指定日期時間轉秒數。
  • FROM_UNIXTIME(1672574400) → '2023-01-01 12:00:00'。
  • FROM_UNIXTIME(ts, '%Y-%m-%d %H:%i:%s') → 自定義格式輸出。

日期差值

  • DATEDIFF('2023-01-02', '2023-01-01') → 1(date1 - date2 天數,可負)。

日期組件提取

日期運算

  • DATE_ADD(d, INTERVAL expr unit) / DATE_SUB(...):加減間隔。
  • ADDDATE/SUBDATE 為同義詞。
  • 單位:MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 等。
  • 範例:DATE_ADD('2023-01-01', INTERVAL 1 MONTH) → '2023-02-01'。

周期運算(YYYYMM 格式)

  • PERIOD_ADD(202301, 2) → 202303。
  • PERIOD_DIFF(202303, 202212) → 3(月數差)。

相對時間查詢常用模式

-- 最近 30 天
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30
-- 本月
WHERE YEAR(date_col)=YEAR(NOW()) AND MONTH(date_col)=MONTH(NOW())
-- 避免函數列導致索引失效,改用範圍:
WHERE date_col >= DATE_SUB(NOW(), INTERVAL 30 DAY)

提示

  • 盡量不要在列上使用函數(如 YEAR(date_col)),導致索引失效,改用常數範圍查詢。
  • TIMESTAMP 受 2038 年限制,長期項目優先用 DATETIME。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數返回值示例
DAYOFWEEK(d)1=週日 ... 7=週六DAYOFWEEK('2023-01-01') → 1
WEEKDAY(d)0=週一 ... 6=週日WEEKDAY('2023-01-01') → 6
DAYOFMONTH(d)1~31DAYOFMONTH('2023-01-15') → 15
DAYOFYEAR(d)1~366DAYOFYEAR('2023-02-01') → 32
MONTH(d)1~12MONTH('2023-05-01') → 5
DAYNAME(d)英文星期名DAYNAME('2023-01-01') → 'Sunday'
MONTHNAME(d)英文月份名MONTHNAME('2023-05-01') → 'May'
QUARTER(d)1~4QUARTER('2023-04-01') → 2
WEEK(d[,mode])週數,mode=0 週日起算,1 週一WEEK('2023-01-01',1) → 52
YEAR(d)年份YEAR('2023-01-01') → 2023
HOUR(t)0~23HOUR('14:30:00') → 14
MINUTE(t)0~59MINUTE('14:30:00') → 30
SECOND(t)0~59SECOND('14:30:00') → 0