在 MySQL 中处理时间数据时,日期函数非常实用。它们能帮助你提取、格式化、计算和比较时间值。掌握这些函数可以让你更灵活地查询和操作 datetime、date 和 timestamp 类型的数据。
获取当前时间
常用函数用于获取系统当前时间:
NOW():返回当前日期和时间,格式为 'YYYY-MM-DD HH:MM:SS' CURDATE():只返回当前日期,格式为 'YYYY-MM-DD' CURTIME():只返回当前时间,格式为 'HH:MM:SS' 例如:SELECT NOW(); -- 输出类似 2025-04-05 10:30:45
SELECT CURDATE(); -- 输出 2025-04-05
提取日期部分信息
从日期时间中提取年、月、日等特定部分:
YEAR(date):提取年份 MONTH(date):提取月份(1-12) DAY(date):提取天数 HOUR(time)、MINUTE(time)、SECOND(time):分别提取时、分、秒 DATE(date):只取日期部分,忽略时间 TIME(datetime):只取时间部分 示例:SELECT YEAR('2025-04-05 10:30:45'); -- 返回 2025
SELECT MONTH(NOW()); -- 返回当前月份
日期格式化与转换
使用 DATE_FORMAT 可以自定义输出格式:
DATE_FORMAT(date, format):按指定格式显示日期 常见格式符:%Y:四位年份
%m:两位月份(01-12)
%d:两位日期(01-31)
%H:24小时制小时
%i:分钟(00-59)
%s:秒(00-59)
示例:
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i'); -- 输出如 2025年04月05日 10:30
若要将字符串转为日期,使用 STR_TO_DATE:
SELECT STR_TO_DATE('2025/04/05', '%Y/%m/%d'); -- 转为标准日期格式日期计算与间隔操作
MySQL 提供了方便的日期加减函数:
DATE_ADD(date, INTERVAL expr unit):给日期加上一个时间间隔 DATE_SUB(date, INTERVAL expr unit):减去一个时间间隔 支持的单位包括:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR 等示例:
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- 当前时间加7天
SELECT DATE_SUB('2025-04-05', INTERVAL 1 MONTH); -- 减一个月
也可以用 DATEDIFF 计算两个日期之间的天数差:
SELECT DATEDIFF('2025-04-10', '2025-04-05'); -- 返回 5基本上就这些常用操作。合理使用这些函数,能轻松应对大多数时间处理需求。注意字段类型匹配,避免格式错误导致查询失败。
