1、MySQL 为日期增加一个时间间隔:date_add()
set @dt = now();
select date_add(@dt, interval 1 day); # 加1天
select date_add(@dt, interval 1 hour); # 加1小时
select date_add(@dt, interval 1 minute); # 加1分钟
select date_add(@dt, interval 1 second); # 加1秒
select date_add(@dt, interval 1 microsecond); # 加1毫秒
select date_add(@dt, interval 1 week); # 加1周
select date_add(@dt, interval 1 month); # 加1月
select date_add(@dt, interval 1 quarter); # 加1季
select date_add(@dt, interval 1 year); # 加1年
select date_add(@dt, interval '01:11:22' hour_second); # 加1小时11分22秒
select date_add(@dt, interval '1 01:10:20' day_second); # 加1天1小时10分20秒
- 注意:MySQL 中还有adddate(), addtime()函数,可以用date_add() 来替代。
2、MySQL 为日期减去一个时间间隔:date_sub()
select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second); # 减1天1小时1分1秒
- 注意:MySQL 中还有两个函数subdate(), subtime(),建议,用date_sub() 来替代。
3、MySQL 另类日期函数: period_add(P,N), period_diff(P1,P2)
# 函数参数"P" 的格式为"YYYYMM" 或者 "YYMM",第二个参数"N" 表示增加或减去N month(月)。
# MySQL period_add(P,N):日期加/减去N月。
select period_add(200808,2), period_add(20080808,-2);
# MySQL period_diff(P1,P2):日期P1-P2,返回N 个月。
select period_diff(200808, 200801);
4、MySQL 日期、时间相减函数: datediff(date1,date2), timediff(time1,time2)
# 两个日期相减date1 date2,返回天数。
select datediff('2008-08-08', '2008-08-01'); # 7
select datediff('2008-08-01', '2008-08-08'); # -7
# 两个日期相减time1 time2,返回time 差值。
select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); # 08:08:08
select timediff('08:08:08', '00:00:00'); # 08:08:08
- 注意:timediff(time1,time2) 函数的两个参数类型必须相同。