如何在mysql中进行日期计算_mysql日期计算函数

7次阅读

MySQL 提供 DATE_ADD()、DATE_SUB()实现日期增减,DATEDIFF()和 TIMESTAMPDIFF()计算日期差,YEAR()等函数提取日期部分,NOW()、DATE_FORMAT()处理当前时间与格式化。

如何在 mysql 中进行日期计算_mysql 日期计算函数

MySQL 提供了丰富且实用的日期计算函数,能轻松完成加减天数、计算间隔、提取日期部分等操作,无需手动转换时间戳或复杂逻辑。

加减日期:DATE_ADD() 和 DATE_SUB()

这是最常用的日期增减方式,支持年、月、日、小时、分钟等多种单位。

  • DATE_ADD(date, INTERVAL expr unit):给日期加上指定间隔
  • DATE_SUB(date, INTERVAL expr unit):从日期中减去指定间隔

例如:

SELECT DATE_ADD(‘2024-05-01’, INTERVAL 10 DAY); → ‘2024-05-11’

SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); → 当前时间往前推一个月

注意:对月份做加减时会自动处理月末边界(如 1 月 31 日 + 1 month → 2 月 28 日或 29 日)。

计算两个日期之间的差值:DATEDIFF() 和 TIMESTAMPDIFF()

DATEDIFF(end_date, start_date) 只返回两个日期之间的 ** 天数差 **(忽略时分秒),结果为整数,end 在前、start 在后。

SELECT DATEDIFF(‘2024-12-25’, ‘2024-01-01’); → 359

TIMESTAMPDIFF(unit, start_date, end_date) 更灵活,可按年、月、日、小时等单位计算精确差值(单位在前,起止顺序与 DATEDIFF 相反)。

SELECT TIMESTAMPDIFF(YEAR, ‘1990-06-15’, NOW()); → 年龄(按年份差)

SELECT TIMESTAMPDIFF(MONTH, ‘2023-03-10’, ‘2024-05-20’); → 14

提取和构造日期:YEAR()、MONTH()、DAY()、MAKEDATE() 等

用于拆解或组合日期值:

  • YEAR(date)、MONTH(date)、DAY(date)、HOUR(time):提取对应部分
  • MAKEDATE(year, dayofyear):用年份和一年中的第几天构造日期(如 MAKEDATE(2024, 60) → ‘2024-02-29’)
  • STR_TO_DATE(str, format):将字符串按格式转为日期(如 STR_TO_DATE(’05/20/2024′, ‘%m/%d/%Y’))

这些函数常配合 WHERE 或 GROUP BY 使用,比如按年份统计:GROUP BY YEAR(create_time)

当前时间与日期格式化:NOW()、CURDATE()、DATE_FORMAT()

NOW() 返回当前日期时间,CURDATE() 只返回日期部分,CURTIME() 只返回时间部分。

DATE_FORMAT(date, format) 用于按需 格式化输出,常用格式符包括:

  • %Y:4 位年份,%y:2 位年份
  • %m:01–12 月,%M:英文全称(January)
  • %d:01–31 日,%W:星期全名

例如:SELECT DATE_FORMAT(NOW(), ‘%Y 年 %m 月 %d 日 %H:%i’);

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-01发表,共计1357字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources