SQL Server Dateadd()函數

在本教學中,將學習如何使用SQL Server DATEADD()函數將指定值添加到日期的指定日期部分。

SQL Server DATEADD()函數簡介

DATEADD()函數將數字值添加到輸入日期的指定日期部分,並返回修改後的值。

以下是DATEADD()函數的語法:

DATEADD (date_part , value , input_date )

DATEADD()函數接受三個參數:

  • date_part參數是DATEADD()函數將添加值的日期部分(參見下表中的有效日期部分)。
  • value參數是要添加到input_datedate_part部分的整數。如果值的計算結果為十進位或浮點數,則函數DATEADD()將截斷小數部分。 在這種情況下,它不會對數字進行舍入。
  • input_date參數是文字日期值或運算式,可以將它們解析為:DATEDATETIMEDATETIMEOFFSETDATETIME2SMALLATETIMETIME類型的值。

下表列出了date_part的有效值:

date_part 縮寫形式
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns

DATEADD()函數在將值添加到date_part後返回新的日期值。

SQL Server DATEADD()函數示例

下麵來看一些使用DATEDIFF()函數的例子。

1秒鐘加到2019-12-31 23:59:59,如下查詢語句:

SELECT
    DATEADD(second, 1, '2019-12-31 23:59:59') result;

執行上面查詢語句,得到以下結果:

result
-----------------------
2020-01-01 00:00:00.000

(1 行受影響)

1天加到2019-12-31 23:59:59,如下查詢語句:

SELECT
    DATEADD(day, 1, '2019-12-31 23:59:59') result;

執行上面查詢語句,得到以下結果:

result
-----------------------
2020-01-01 23:59:59.000

下麵示例使用DATEADD()函數根據訂購日期計算估計的發貨日期:

SELECT
    order_id,
    customer_id,
    order_date,
    DATEADD(day, 2, order_date) estimated_shipped_date
FROM
    sales.orders
WHERE
    shipped_date IS NULL
ORDER BY
    estimated_shipped_date DESC;

執行上面查詢語句,得到以下結果:

DateAdd()函數

處理月份的示例

如果向日期添加了幾個月且日期結果的日期不存在,則DATEDIFF()函數將返回返回月份的最後一天。

請參閱以下示例:

SELECT
    DATEADD(month, 4, '2020-05-31') AS result;

在此示例中,返回日期的月份是9月。 但是,9月份不存在第31日,因此,DATEDIFF()函數返回9月(30)的最後一天作為結果日期的日期:

result
-----------------------
2020-09-30 00:00:00.000

(1 row affected)

請注意,以下查詢返回相同的結果:

SELECT
    DATEADD(month,4,'2019-05-30') AS result;

執行上面查詢語句,得到以下結果:

result
-----------------------
2019-09-30 00:00:00.000

(1 row affected)

在本教學中,學習了如何使用SQL Server DATEDIFF()函數將指定值添加到日期的日期部分。


上一篇: SQL Server日期函數 下一篇: SQL Server字串函數