信息发布→ 登录 注册 退出

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

发布时间:2026-01-01

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

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

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

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

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

例如:

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() 和 TIMESTAMPDIFF()

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

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

用于拆解或组合日期值:

  • YEAR(date)、MONTH(date)、DAY(date)、HOUR(time):提取对应部分
  • MAKEDATE(year, dayofyear):用年份和一年中的第几天构造日期(如 MAKEDATE(2025, 60) → '2025-02-29')
  • STR_TO_DATE(str, format):将字符串按格式转为日期(如 STR_TO_DATE('05/20/2025', '%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');

标签:# 按年  # 年中  # 最常用  # 月末  # 英文  # 几天  # 一个月  # 这是  # 在前  # mysql  # 加减  # 字符串  # format  # date  # select  # datediff  # 格式化输出  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!