MySQL获取前/后几年/月/日/秒/毫秒(DATE_ADD(),DATE_SUB())相关总结

MySQL之获取前/后几年/月/日/秒/毫秒(DATE_ADD(),DATE_SUB())相关总结


MySQL官方文档相关说明:

https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html#function_date-add


一. DATE_ADD(date, INTERVAL expr unit)

说明:

从日期增加指定的时间间隔,返回的是一个字符串。

  • date:是你想要修改的日期
  • INTERVAL:是一个关键字,用于表示接下来的表达式是一个时间间隔
  • expr:是你想要添加的时间量
  • unit:是你想要添加的时间间隔的类型,可选类型如下:
MICROSECOND   间隔单位:毫秒 
SECOND    间隔单位:秒 
MINUTE    间隔单位:分钟 
HOUR     间隔单位:小时 
DAY 	间隔单位:天 
WEEK 	间隔单位:星期 
MONTH 	间隔单位:月 
QUARTER	 间隔单位:季度 
YEAR	 间隔单位:年 
SECOND_MICROSECOND	 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒 
MINUTE_MICROSECOND 	复合型,间隔单位:分、毫秒 
MINUTE_SECOND 	复合型,间隔单位:分、秒 
HOUR_MICROSECOND 	复合型,间隔单位:小时、毫秒 
HOUR_SECOND 	复合型,间隔单位:小时、秒 
HOUR_MINUTE 	复合型,间隔单位:小时分 
DAY_MICROSECOND	 复合型,间隔单位:天、毫秒 
DAY_SECOND 	复合型,间隔单位:天、秒 
DAY_MINUTE	 复合型,间隔单位:天、分 
DAY_HOUR 	复合型,间隔单位:天、小时 
YEAR_MONTH 	复合型,间隔单位:年、月 

常规使用示例:
### 年
SELECT DATE_ADD('2024-01-01 10:05:01', INTERVAL 1 YEAR) AS new_date;  
###执行结果:2025-01-01 10:05:01

### 月
SELECT DATE_ADD('2024-01-01', INTERVAL 1 MONTH) AS new_date;  
###执行结果:2024-02-01

### 日
SELECT DATE_ADD('2024-01-01', INTERVAL 30 DAY) AS new_date;  
###执行结果:2024-01-31

### 分
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE) AS new_date;  
###执行结果:2024-07-26 10:08:09

### 日,也可以使用负数,相当于减法
SELECT DATE_ADD('2024-01-01 10:05:01', INTERVAL -1 DAY) AS new_date;  
###执行结果:2023-12-31 10:05:01

复合型使用示例:

对应复合型的unit,需要使用引号对两个参数进行引用起来,中间用任何非数字字符作为间隔即可

### 复合型写法1,年 月
SELECT DATE_ADD('2024-01-01 10:05:06', INTERVAL '1 2' YEAR_MONTH) AS new_date;  
###执行结果:2025-03-01 10:05:06

### 复合型写法2,年 月
SELECT DATE_ADD('2024-01-01 10:05:06', INTERVAL '1-2' YEAR_MONTH) AS new_date;  
###执行结果:2025-03-01 10:05:06

### 复合型写法3,年 月
SELECT DATE_ADD('2024-01-01 10:05:06', INTERVAL '1,2' YEAR_MONTH) AS new_date;  
###执行结果:2025-03-01 10:05:06

注意:

对于符合型的unit,如果时间间隔只指定了一个值,也可以正常工作,对应XX_YY使用的单位为YY,也就相当于使用一个单位的unit,同时可以使用负数。

示例:

###年 月
SELECT DATE_ADD('2024-01-01 10:05:06', INTERVAL 1 YEAR_MONTH) AS new_date;  
###执行结果:2024-02-01 10:05:06

###年 月
SELECT DATE_ADD('2024-01-01 10:05:06', INTERVAL -1 YEAR_MONTH) AS new_date;  
###执行结果:2023-12-01 10:05:06

二. DATE_SUB(date,INTERVAL expr unit)

说明:

用于从日期中减去指定的时间间隔。其语法与 DATE_ADD() 类似

  • date:是你想要修改的日期
  • INTERVAL:是一个关键字,用于表示接下来的表达式是一个时间间隔
  • expr:是你想要添加的时间量
  • unit:是你想要添加的时间间隔的类型

示例:
### 年
SELECT DATE_SUB('2024-01-01 10:05:01', INTERVAL 1 YEAR) AS new_date;  
###执行结果:2023-01-01 10:05:01

### 月
SELECT DATE_SUB('2024-01-01', INTERVAL 1 MONTH) AS new_date;  
###执行结果:2023-12-01

### 日
SELECT DATE_SUB('2024-01-01', INTERVAL 30 DAY) AS new_date;  
###执行结果:2023-12-02

### 分
SELECT DATE_SUB(NOW(), INTERVAL 1 MINUTE) AS new_date;  
###执行结果:2024-07-26 10:55:46

### 日,也可以使用负数,负负得正,相当于加法,
SELECT DATE_SUB('2024-01-01 10:05:01', INTERVAL -1 DAY) AS new_date;  
###执行结果:2024-01-02 10:05:01

.
.
.
.
.

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值