问题:如何对传入的某个时间格式的时间进行增/减
写在前面: 我们经常会遇到一些通过时间来筛选数据的业务场景,那么如果不知道今天要说的关键字和相关函数,是否会让需求解决难度直线上升呢?
【示例写在最后,不想看前述可直接翻阅🤣】
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;
写在最后:
如果大家想进一步学习和查看时间相关函数,可以移步我的另一篇关于时间函数的详解。
如果有用,希望大家素质三连哦,跪谢各位大人!!!