首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

MySQL 日期時間函數完整速查手冊:從基礎到進階應用

     編輯:PHP 相關知識

日期時間獲取類

函數說明示例輸出
NOW() / SYSDATE()當前日期時間(YYYY-MM-DD HH:MM:SS)2024-05-20 14:30:00
CURDATE() / CURRENT_DATE()當前日期2024-05-20
CURTIME() / CURRENT_TIME()當前時間14:30:00
UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP()UTC 時間2024-05-20 06:30:00

日期拆解與屬性提取

函數說明範例
YEAR(date)年份 (1000-9999)YEAR('2024-05-20') → 2024
MONTH(date)月份 (1-12)MONTH('2024-05-20') → 5
DAY(date) / DAYOFMONTH()月內天數 (1-31)DAY('2024-05-20') → 20
DAYOFWEEK(date)週索引 (1=Sun ... 7=Sat,ODBC 標準)DAYOFWEEK('2024-05-20') → 2
WEEKDAY(date)週索引 (0=Mon ... 6=Sun)WEEKDAY('2024-05-20') → 0
DAYNAME(date)星期英文名DAYNAME('2024-05-20') → 'Monday'
MONTHNAME(date)月份英文名MONTHNAME('2024-05-20') → 'May'
DAYOFYEAR(date)年內天數 (1-366)DAYOFYEAR('2024-05-20') → 141
WEEK(date[,mode])年內週數,mode 控制週起始日與範圍WEEK('2024-05-20',1) → 21
QUARTER(date)季度 (1-4)QUARTER('2024-05-20') → 2
HOUR(time), MINUTE(), SECOND()時/分/秒HOUR('14:30:00') → 14
MICROSECOND()微秒部分MICROSECOND('14:30:00.123456') → 123456

日期運算與格式化

函數說明典型用法
DATE_ADD(date, INTERVAL expr unit)加減時間間隔DATE_ADD(NOW(), INTERVAL 1 DAY)
DATE_SUB(date, INTERVAL expr unit)減去間隔DATE_SUB(NOW(), INTERVAL 3 MONTH)
DATEDIFF(date1, date2)兩日期相差天數 (date1-date2)DATEDIFF('2024-05-20','2024-05-01') → 19
TIMEDIFF(time1, time2)時間差 (time1-time2)TIMEDIFF('12:00','09:30') → '02:30:00'
DATE_FORMAT(date, format)按格式字串輸出DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i')
STR_TO_DATE(str, format)字串解析為日期STR_TO_DATE('20-05-2024','%d-%m-%Y')
UNIX_TIMESTAMP([date])轉 Unix 時間戳UNIX_TIMESTAMP() → 1716208200
FROM_UNIXTIME(ts[,format])時間戳轉日期FROM_UNIXTIME(1716208200, '%Y-%m-%d')
SEC_TO_TIME(seconds)秒數轉 HH:MM:SSSEC_TO_TIME(3661) → '01:01:01'
TIME_TO_SEC(time)時間轉總秒數TIME_TO_SEC('01:01:01') → 3661
PERIOD_ADD(P, N)年月數 P 加 N 月PERIOD_ADD(202405, 3) → 202408
PERIOD_DIFF(P1, P2)兩年月數差月數PERIOD_DIFF(202408,202405) → 3

常用格式化符號速查(DATE_FORMAT)

  • %Y 4位年、%y 2位年、%m 2位月、%c 無前導零月
  • %d 2位日、%e 無前導零日
  • %H 24制時、%h 12制時、%i 分、%s 秒
  • %W 完整星期名、%a 縮寫、%M 完整月名、%b 縮寫
  • %p AM/PM、%r 12制時間 (hh:mm:ss AM/PM)

實戰技巧

  1. 本周一 00:00:DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE())) DAY)
  2. 本月第一天:DATE_FORMAT(CURDATE(), '%Y-%m-01')
  3. 上月同期範圍:WHERE created_at BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND CURDATE()
  4. 時區轉換:CONVERT_TZ(dt, 'UTC', 'Asia/Taipei')(需載入時區表)
  5. 索引優化:WHERE date_col >= '2024-01-01' AND date_col < '2024-02-01' 避免函數包裹列導致索引失效
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved