SQL Server DATEADD() Function

In SQL Server, the DATEADD() function adds a number to a datepart and returns the modified datetime value.

Syntax:

DATEADD(datepart, number, date)

Parameters

datepart: The specific part of the specified date parameter to which the DATEADD() function will add a number. The following table lists all valid datepart values:

Datepart Abbreviation
year yy, yyyy
quarter qq, q
month mm, m
day of year dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns

Note: dayofyear, day, and weekday return the same value.

number: An integer that is to be added to the specified datepart. It can be an expression that returns an integer. The number will be truncated if it has a decimal fraction.

Note: DATEADD() function returns an error if the number argument exceeds the range of int.

date: A datetime value or an expression that resolves to a datetime value. It can be a string expression, a table column, or a variable. A string literal value must resolve to type DATE, DATETIME, DATETIMEOFFSET, DATETIME2, SMALLATETIME, or TIME

Return Value

The return type depends on the argument supplied for the date parameter.

If the value of the date is a string literal date value, then DATEADD() returns a datetime value. If any other valid data type is supplied for the date column, then the same data type is returned from DATEADD() function.

Add Days in DateTime

The following example adds 1 day to the specified date '12/31/2021' (31st December 2021).

Example: Add Days
SELECT DATEADD(day,1,'12/31/2021') AS Result

In the above example, 'day' is the datepart that specifies that a number should be added to a day part of the specified date '12/31/2021'. The second parameter is a number that should be added, and the third parameter is a date where the specified parameter should be added.

Add Months in DateTime

In this example, for the month datepart, 2 is added to date '12/31/2021'. As you can see in the result, two months is added to the input date and the DATEADD() function returns 28th February 2022, which is the last day of the returned date.

Example: Add Months
SELECT DATEADD(month, 2, '12/31/2021') AS Result

You can specify negative number to be added in the date which will deduct a number from the specified datetime value.

Example: Add Negative Number to Date
SELECT DATEADD(month, -2, '12/31/2021') AS Result

Use DATEADD() with Columns

The following DATEADD() function is used with the HireDate column of the Employee table to return the JoinDate. Two weeks is added to the HireDate column to return JoinDate.

Example: DATEADD() with Column
SELECT EmployeeID, FirstName, HireDate, DATEADD(wk, 2, HireDate) AS JoinDate 
FROM Employee 

Make sure the specified date is in the correct format; otherwise it will raise an error "The conversion of a varchar data type to a datetime data type resulted in an out-of-range value."

Example: Wrong Date Format
SELECT DATEADD(month, -2, '12/31/2021 123') AS Result