MySQL提供DATE_ADD()、DATE_SUB()实现日期增减,DATEDIFF()和TIMESTAMPDIFF()计算日期差,YEAR()等函数提取日期部分,NOW()、DATE_FORMAT()处理当前时间与格式化。
MySQL 提供了丰富且实用的日期计算函数,能轻松完成加减天数、计算间隔、提取日期部分等操作,无需手动转换时间戳或复杂逻辑。
这是最常用的日期增减方式,支持年、月、日、小时、分钟等多种单位。
例如:
SELECT DATE_ADD('2025-05-01', INTERVAL 10 DAY); → '2025-05-11'
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); → 当前时间往前推一个月
注意:对月份做加减时会自动处理月末边界(如1月31日 + 1 month → 2月28日或29日)。
DATEDIFF(end_date, start_date) 只返回两个日
期之间的**天数差**(忽略时分秒),结果为整数,end 在前、start 在后。
SELECT DATEDIFF('2025-12-25', '2025-01-01'); → 359
TIMESTAMPDIFF(unit, start_date, end_date) 更灵活,可按年、月、日、小时等单位计算精确差值(单位在前,起止顺序与 DATEDIFF 相反)。
SELECT TIMESTAMPDIFF(YEAR, '1990-06-15', NOW()); → 年龄(按年份差)
SELECT TIMESTAMPDIFF(MONTH, '2025-03-10', '2025-05-20'); → 14
用于拆解或组合日期值:
这些函数常配合 WHERE 或 GROUP BY 使用,比如按年份统计:GROUP BY YEAR(create_time)。
NOW() 返回当前日期时间,CURDATE() 只返回日期部分,CURTIME() 只返回时间部分。
DATE_FORMAT(date, format) 用于按需格式化输出,常用格式符包括:
例如:SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i');