- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - Union vs Join
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 复合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 集群索引
- SQL - 非集群索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - Min & Max
- SQL - Null 函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - DATEADD 函数
SQL 的DATEADD()函数是一个内置函数,它将指定的数字(带符号整数)的间隔添加到给定的日期或时间,并返回修改后的日期/时间值。
此函数接受三个参数 - 要添加的间隔(例如年、季度、月、小时、分钟等)、要添加的间隔数(可以是正整数或负整数)以及指定加法起点的日期或时间值。
注意 - 此函数的返回值的数据类型是动态的,它取决于为日期提供的参数。
语法
以下是 SQL DATEADD()函数的语法 -
DATEADD(datepart, number, date)
参数
此函数接受三个参数。下面描述了相同的内容 -
- datepart - 这指定要添加的日期或时间段。以下是可能的值 -
- year, yyyy, yy = 年
- quarter, qq, q = 季度
- month, mm, m = 月
- dayofyear, dy, y = 一年中的第几天
- day, dd, d = 日
- week, ww, wk = 周
- weekday, dw, w = 工作日
- hour, hh = 小时
- minute, mi, n = 分钟
- second, ss, s = 秒
- millisecond, ms = 毫秒
- number - 这指定要添加到日期的间隔。此间隔可以是正数(将获取将来的日期或日期时间)或负数(将获取过去的日期或日期时间)整数。
- date - 这指定添加间隔的日期。
示例
在下面的示例中,我们尝试将 7 年添加到给定的日期 -
SQL> SELECT DATEADD(YEAR, 7, '2023/02/14') AS RESULT_DATE;
输出
如果我们执行上述查询,则结果将如下所示 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2030-02-14 00:00:00.000 | +-------------------------+
示例
在这里,我们尝试使用以下查询将 7 个月添加到给定的日期 -
SQL> SELECT DATEADD(MONTH, 7, '2023/02/14') AS RESULT_DATE;
输出
当我们执行上述查询时,将获得以下输出 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2023-09-14 00:00:00.000 | +-------------------------+
示例
以下查询将 1 周添加到给定的日期 -
SQL> SELECT DATEADD(WEEK, 1, '2023/02/14') AS RESULT_DATE;
输出
执行上述查询后,输出将显示如下 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2023-02-21 00:00:00.000 | +-------------------------+
示例
在这里,我们使用以下查询将 1 小时添加到提供的时间 -
SQL> SELECT DATEADD(HOUR, 1, '2023/02/14 09:00:30.430') AS RESULT_DATE;
输出
执行上述查询后,输出将显示如下 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2023-02-14 10:00:30.430 | +-------------------------+
示例
以下查询将 30 秒添加到指定的时间 -
SQL> SELECT DATEADD(SECOND, 30, '2023/02/14 09:00:30.430') AS RESULT_DATE;
输出
当我们执行上述查询时,将获得以下输出 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2023-02-14 09:01:00.430 | +-------------------------+
示例
在下面的示例中,我们尝试从指定的日期中减去 1 个月 -
SQL> SELECT DATEADD(MONTH, -1, '2023/02/14') AS RESULT_DATE;
输出
执行上述查询后,输出将显示如下 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2023-01-14 00:00:00.000 | +-------------------------+
示例
在这里,我们使用以下查询将 2 年添加到指定的日期 -
SQL> SELECT DATEADD(YEAR, +2, '2023/02/14') AS RESULT_DATE;
输出
执行上述查询后,输出将显示如下 -
+-------------------------+ | RESULT_DATE | +-------------------------+ | 2025-04-14 00:00:00.000 | +-------------------------+
示例
如果作为参数传递给此函数的值无效,则会导致错误。
SQL> SELECT DATEADD(YEAR, 2, '2023/15/76') AS RESULT_DATE;
错误
当我们执行上述查询时,将获得以下输出 -
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
示例
假设我们在 SQL 数据库中使用 CREATE 语句创建了一个名为 EMPLOYEE 的表,如下面的查询所示 -
SQL> CREATE TABLE EMPLOYEE (ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, SUBMISSION_DATE VARCHAR (25));
现在,让我们使用 INSERT 语句在 EMPLOYEE 表中插入一些记录,如下面的查询所示 -
SQL> INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(1, 'Dhruv', 32, '2020-02-10'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(2, 'Arjun', 25, '2020-12-15'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(3, 'Dev', 23, '2021-03-11'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(4, 'Riya', 25, '2019-02-05'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(5, 'Aarohi', 27, '2018-06-16'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(6, 'Lisa', 22, '2020-11-13'); INSERT INTO EMPLOYEE(ID, NAME, AGE, SUBMISSION_DATE) VALUES(7, 'Roy', 24, '2020-01-01');
我们可以使用以下查询验证表是否已创建 -
SQL> SELECT * FROM EMPLOYEE;
表 EMPLOYEE 已成功在 SQL 数据库中创建。
+-----+--------+------+--------------------+ | ID | NAME | AGE | SUBMISSION_DATE | +-----+--------+------+--------------------+ | 1 | Dhruv | 32 | 2020-02-10 | | 2 | Arjun | 25 | 2020-12-15 | | 3 | Dev | 23 | 2021-03-11 | | 4 | Riya | 25 | 2019-02-05 | | 5 | Aarohi | 27 | 2018-06-16 | | 6 | Lisa | 22 | 2020-11-13 | | 7 | Roy | 24 | 2020-01-01 | +-----+--------+------+--------------------+
以下查询将 10 年添加到SUBMISSION_DATE列的实体 -
注意 - CURRENT_TIMESTAMP检索当前的日期和时间。
SQL> SELECT ID, NAME, SUBMISSION_DATE, DATEADD(YEAR, 10, SUBMISSION_DATE) AS DATE_ADD FROM EMPLOYEE;
输出
当我们执行上述查询时,将获得以下输出 -
+-----+--------+-----------------+-------------------------+ | ID | NAME | SUBMISSION_DATE | DATE_ADD | +-----+--------+-----------------+-------------------------+ | 1 | Dhruv | 2020-02-10 | 2030-02-10 00:00:00.000 | | 2 | Arjun | 2020-12-15 | 2030-12-15 00:00:00.000 | | 3 | Dev | 2021-03-11 | 2031-03-11 00:00:00.000 | | 4 | Riya | 2019-02-05 | 2029-02-05 00:00:00.000 | | 5 | Aarohi | 2018-06-16 | 2028-06-16 00:00:00.000 | | 6 | Lisa | 2020-11-13 | 2030-11-13 00:00:00.000 | | 7 | Roy | 2020-01-01 | 2030-01-01 00:00:00.000 | +-----+--------+-----------------+-------------------------+
示例
考虑先前创建的表,让我们从SUBMISSION_DATE列的实体中减去 2 个季度 -
SQL> SELECT ID, NAME, SUBMISSION_DATE, DATEADD(QUARTER, -2, SUBMISSION_DATE) AS DATE_ADD FROM EMPLOYEE;
输出
如果我们执行上述查询,则结果将如下所示 -
+-----+--------+-----------------+-------------------------+ | ID | NAME | SUBMISSION_DATE | DATE_ADD | +-----+--------+-----------------+-------------------------+ | 1 | Dhruv | 2020-02-10 | 2019-08-10 00:00:00.000 | | 2 | Arjun | 2020-12-15 | 2020-06-15 00:00:00.000 | | 3 | Dev | 2021-03-11 | 2020-09-11 00:00:00.000 | | 4 | Riya | 2019-02-05 | 2018-08-05 00:00:00.000 | | 5 | Aarohi | 2018-06-16 | 2017-12-16 00:00:00.000 | | 6 | Lisa | 2020-11-13 | 2020-05-13 00:00:00.000 | | 7 | Roy | 2020-01-01 | 2019-07-01 00:00:00.000 | +-----+--------+-----------------+-------------------------+