SQL DATEADD函数

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.

示例

假设我们使用CREATE语句在SQL数据库中创建了一个名为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;

在SQL数据库中成功创建了 EMPLOYEE 表。

+-----+--------+------+--------------------+
| 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         |
+-----+--------+------+--------------------+

以下查询将在 SUBMISSION_DATE 列的实体上增加10年-

注意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 |
+-----+--------+-----------------+-------------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程