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

MySQL 中处理日期数据,核心是掌握几个常用 DATE 相关函数和日期类型的基本用法。不需要死记硬背,理解场景、类型和函数的对应关系,就能准确完成大部分日期操作。
明确日期字段该用什么类型
MySQL 提供了多种日期时间类型,选对类型是正确处理的第一步:
- DATE:只存日期(如 '2023-05-12'),适合生日、签约日等无需时间的场景
- DATETIME:存日期+时间(如 '2023-05-12 14:30:22'),精度到秒,不带时区
- TIMESTAMP:也存日期时间,但范围小(1970–2038)、自动时区转换、可设默认值为 CURRENT_TIMESTAMP
- 避免用字符串(如 VARCHAR)存日期——没法直接比较、不能用索引、易出格式错误
提取日期中的年月日或星期
用 YEAR()、MONTH()、DAY()、WEEKDAY() 等函数快速取值:
10分钟内自己学会PHP其中,第1篇为入门篇,主要包括了解PHP、PHP开发环境搭建、PHP开发基础、PHP流程控制语句、函数、字符串操作、正则表达式、PHP数组、PHP与Web页面交互、日期和时间等内容;第2篇为提高篇,主要包括MySQL数据库设计、PHP操作MySQL数据库、Cookie和Session、图形图像处理技术、文件和目录处理技术、面向对象、PDO数据库抽象层、程序调试与错误处理、A
- SELECT YEAR('2023-05-12'); → 返回 2023
- SELECT MONTH('2023-05-12'); → 返回 5
- SELECT DAYOFWEEK('2023-05-12'); → 周日=1,周一=2…返回 6(那天是周五)
- 注意:DAY() 和 DAYOFMONTH() 效果一样;DAYNAME() 返回英文星期名(如 'Friday')
计算日期差和加减天数
不用手动算,MySQL 提供简洁函数:
- DATEDIFF('2023-05-20', '2023-05-12'); → 返回 8(前者减后者,单位是天)
- DATE_ADD('2023-05-12', INTERVAL 7 DAY); → 得到 '2023-05-19'
- DATE_SUB('2023-05-12', INTERVAL 1 MONTH); → 返回 '2023-04-12'
- INTERVAL 后可接 DAY / WEEK / MONTH / YEAR / HOUR / MINUTE 等,灵活组合
把字符串转成日期,或把日期格式化输出
导入数据常遇到字符串日期,需转换;展示时又常要统一格式:
- STR_TO_DATE('12/05/2023', '%d/%m/%Y'); → 转成 '2023-05-12'(注意顺序和符号匹配)
- DATE_FORMAT('2023-05-12', '%Y年%m月%d日'); → 输出 '2023年05月12日'
- 常用格式符:%Y(4位年)、%y(2位年)、%m(01–12)、%c(1–12,无前导零)、%d(01–31)









