如何处理日期数据_mysql date函数基础

MySQL处理日期需选对类型(DATE/DATETIME/TIMESTAMP)、用YEAR/MONTH等提取值、DATEDIFF/DATE_ADD等计算差值、STR_TO_DATE/DATE_FORMAT转换与格式化。

MySQL 中处理日期数据,核心是掌握几个常用 DATE 相关函数和日期类型的基本用法。不需要死记硬背,理解场景、类型和函数的对应关系,就能准确完成大部分日期操作。

明确日期字段该用什么类型

MySQL 提供了多种日期时间类型,选对类型是正确处理的第一步:

  • DATE:只存日期(如 '2025-05-12'),适合生日、签约日等无需时间的场景
  • DATETIME:存日期+时间(如 '2025-05-12 14:30:22'),精度到秒,不带时区
  • TIMESTAMP:也存日期时间,但范围小(1970–2038)、自动时区转换、可设默认值为 CURRENT_TIMESTAMP
  • 避免用字符串(如 VARCHAR)存日期——没法直接比较、不能用索引、易出格式错误

提取日期中的年月日或星期

YEAR()MONTH()DAY()WEEKDAY() 等函数快速取值:

  • SELECT YEAR('2025-05-12'); → 返回 2025
  • SELECT MONTH('2025-05-12'); → 返回 5
  • SELECT DAYOFWEEK('2025-05-12'); → 周日=1,周一=2…返回 6(那天是周五)
  • 注意:DAY()DAYOFMONTH() 效果一样;DAYNAME() 返回英文星期名(如 'Friday'

计算日期差和加减天数

不用手动算,MySQL 提供简洁函数:

  • DATEDIFF('2025-05-20', '2025-05-12'); → 返回 8(前者减后者,单位是天)
  • DATE_ADD('2025-05-12', INTERVAL 7 DAY); → 得到 '2025-05-19'
  • DATE_SUB('2025-05-12', INTERVAL 1 MONTH); → 返回 '2025-04-12'
  • INTERVAL 后可接 DAY / WEEK / MONTH / YEAR / HOUR / MINUTE 等,灵活组合

把字符串转成日期,或把日期格式化输出

导入数据常遇到字符串日期,需转换;展示时又常要统一格式:

  • STR_TO_DATE('12/05/2025', '%d/%m/%Y'); → 转成 '2025-05-12'(注意顺序和符号匹配)
  • DATE_FORMAT('2025-05-12', '%Y年%m月%d日'); → 输出 '2025年05月12日'
  • 常用格式符:%Y(4位年)、%y(2位年)、%m(01–12)、%c(1–12,无前导零)、%d(01–31)