《MySQL时间操作全攻略:年/月/日/时/分/秒增减替换,一文掌握DATE_ADD()与DATE_SUB()!》mysql关于时间的基础操作看这一篇就够啦!!!

问题:如何对传入的某个时间格式的时间进行增/减

写在前面: 我们经常会遇到一些通过时间来筛选数据的业务场景,那么如果不知道今天要说的关键字和相关函数,是否会让需求解决难度直线上升呢?
【示例写在最后,不想看前述可直接翻阅🤣】

1.【INTERVAL】 语法与应用

在mysql以及其它数据库操作语言中,关于时间的操作一直是最为常见的需求之一。而 INTERVAL关键字就是其中最为重要的一个语法操作。它用于指定一个时间间隔,并参与函数或与日期,对年/月/日 、时/分/秒等直接进行加减操作。

1.INTERVAL 语法简介

interval 用于指定时间间隔,可直接与日期进行运行操作,但通常与 DATE_ADD(),DATE_SUB()函数一起使用。其基本语法如下:

DATE_ADD(date , INTERVAL num TYPE); //在 date 基础上,对 type 时间节点进行增加。
	例:DATE_ADD('2025-2-10 09:41:00',INTERVAL 1 YEAR) 获取当前时间增加 1 年后的时间。
	
DATE_SUB(date , INTERVAL num TYPE); //在 date 基础上,对 type 时间节点进行增加。
	例:DATE_SUB('2025-2-10 09:41:00',INTERVAL 1 YEAR) 获取当前时间减少 1 年后的时间。
	
date + INTERVAL num TYPE;//在 date 基础上,对 type 时间节点进行增加。
	例:'2025-2-10 09:41:00' + INTERVAL 1 MONTH; // 获取增加一个月后的时间
	
date - INTERVAL num TYPE;//在 date 基础上,对 type 时间节点进行增加。
	例:'2025-2-10 09:41:00' - INTERVAL 1 DAY  // 获取减少一天后的时间

2.参数详解

  • date:日期或时间。可以是 DATE,DATETIME,TIMESTAMP 类型。
  • num:操作时间间隔的数量,通常是整数。
    • 例如1天,一年,一秒等。 1 DAY /1 YEAR / 1 SECOND
  • TYPE:时间间隔的类型。
    • 年:YEAR
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一年后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一年后的时间
  • 月:MONTH
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一月后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一月后的时间
  • 日:DAY
SELECT NOW + INTERVAL 1 DAY;//获取当前时间增加一天后的时间
SELECT NOW - INTERVAL 1 DAY;//获取当前时间增加一天后的时间
  • 时:HOUR
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一小时后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一小时后的时间
  • 分:MINUTE
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一分钟后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一分钟后的时间
  • 秒:SECOND
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一秒后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一秒后的时间
  • 微秒:MICROSECOND
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一微秒后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一微秒的时间
  • 季度:QUARTER
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一季度后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一季度后的时间
  • 周: WEEK
SELECT NOW + INTERVAL 1 YEAR;//获取当前时间增加一周后的时间
SELECT NOW - INTERVAL 1 YEAR;//获取当前时间增加一周后的时间

3.操作实例

3.1 使用DATE_ADD()和DATE_SUB()函数

增加时间


SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR); -- 增加1年
SELECT DATE_ADD(NOW(), INTERVAL 12 HOUR); -- 增加12小时

减少时间
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR); -- 减少1年
SELECT DATE_SUB(NOW(), INTERVAL 12 HOUR); -- 减少12小时

3.2 直接在表达式中使用

增加时间
SELECT NOW() + INTERVAL 1 YEAR; -- 增加1年
SELECT NOW() + INTERVAL 12 HOUR; -- 增加12小时

减少时间
SELECT NOW() - INTERVAL 1 YEAR; -- 减少1年
SELECT NOW() - INTERVAL 12 HOUR; -- 减少12小时

4.实际应用

4.1 统计12小时内的数据

假设有一张数据表table_a,其中有一个customerDate字段,类型为DATETIME,现在需要统计用户录入时间12小时内的数据:

SELECT *
FROM table_a
WHERE customerDate >= NOW() - INTERVAL 12 HOUR;

写在最后
如果大家想进一步学习和查看时间相关函数,可以移步我的另一篇关于时间函数的详解。

如果有用,希望大家素质三连哦,跪谢各位大人!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值