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