一、说明
DATE_ADD() :从日期增加指定的时间间隔,返回的是一个字符串
DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值
二、使用
— 1 当前日期向后推7天
select date_add(now(),INTERVAL 7 DAY);
select date_add(‘2022-03-23’,INTERVAL 7 DAY);
— 2 当前日期向推7天
select date_add(now(),INTERVAL -7 DAY);
— 3 更新学生信息表的时间自动,向前推7天,模拟订单7天不点确认收货,7天自动收货
select * from tiny_order;
update tiny_order set CreateTime=date_add(CreateTime,INTERVAL -7 DAY);
— 4 把当前日期向后推1个时间
select date_add(NOW(),INTERVAL 1 HOUR);
— 5 日期向后推10年,10年再聚首
SELECT date_add(CURRENT_DATE(),INTERVAL 10 YEAR);
三、在项目中应用
— 准备测试数据
select * from tiny_order;
— 1. 把当天的订单向前推1天
update tiny_order set pay_time=date_add(pay_time,interval -1 day),
create_time=date_add(create_time,interval -1 day)
where create_time > DATE_FORMAT(NOW(),’%Y-%m-%d 00:00:00′);
— 2. 昨天的销售数据
— 昨天开始时间
select DATE_FORMAT(date_add(NOW(),interval -1 day),’%Y-%m-%d 00:00:00′);
— 昨天结束时间
select DATE_FORMAT(NOW(),’%Y-%m-%d 00:00:00′);
select sum(real_amount) as 商品总金额,
sum(order_amount) as 订单总金额,
hour(create_time) as 小时
from tiny_order
where create_time > DATE_FORMAT(date_add(NOW(),interval -1 day),’%Y-%m-%d 00:00:00′)
and create_time < DATE_FORMAT(NOW(),’%Y-%m-%d 00:00:00′)
group by hour(create_time);
— 3. 最近7天
select sum(real_amount) as 商品总金额,
sum(order_amount) as 订单总金额,
DATE_FORMAT(create_time,’%Y-%m-%d’) as 日期
from tiny_order
where create_time > DATE_FORMAT(date_add(NOW(),interval -6 day),’%Y-%m-%d 00:00:00′)
group by DATE_FORMAT(create_time,’%Y-%m-%d’);