MySQL 日期计算方法 date_sub、date_add、datediff 详解-文中有示例帮助理解

时间:2025-05-15 09:12:11

1、date_sub()、date_add()

date_sub() 和date_add() 语法相同,只不过一个加一个减。

从日期中减去指定时间间隔

语法:

DATE_SUB(start_date, INTERVAL expr unit)
  • start_date: 起始日期(如 now() , 字段名)。

  • INTERVAL expr unit: 要减去的时间间隔(expr 为数值,unit 为时间单位)。

  • 注释 单位 (unit)
    YEAR
    季度 QUARTER
    MONTH
    WEEK
    DAY
    小时 HOUR
    分钟 MINUTE
    SECOND
 SELECT DATE_SUB(NOW(), INTERVAL 7 DAY);  -- 2025-05-06 18:24:04
 SELECT DATE_SUB('2025-05-13', INTERVAL 7 DAY);   -- 2025-05-06
 ​
 ​
 -- 查过去7天的订单数
 SELECT * FROM orders
 WHERE order_date >= DATE_SUB(NOW(), INTERVAL 7 DAY);
 ​
 ​
 -- 动态计算时间 ,查询某日期 过去7天和未来7天的数据
 SELECT * FROM sales
 WHERE sale_date BETWEEN DATE_SUB('2025-02-20', INTERVAL 7 DAY)  AND DATE_ADD('2025-02-20', INTERVAL 7 DAY);

3、datediff()

计算两个日期之间的天数差(仅日期部分,忽略时间)。

 DATEDIFF(end_date, start_date)
select DATEDIFF(now(), '2024-05-13')  -- 365

select DATEDIFF(now(),'2024-05-13 12:30:41') -- 365