SQL Server DATEADD() 函数
在 SQL Server 中,DATEADD()
函数将一个数字添加到日期的特定部分,并返回修改后的日期时间值。
语法
DATEADD(datepart, number, date)
参数
datepart: DATEADD()
函数将数字添加到的指定日期参数的特定部分。下表列出了所有有效的 datepart 值
日期部分 (Datepart) | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年份中的日期 (day of year) | dy, y |
日 | dd, d |
周 | wk, ww |
星期几 (weekday) | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微秒 | mcs |
纳秒 | ns |
注意:dayofyear、day 和 weekday 返回相同的值。
number: 要添加到指定日期部分的整数。它可以是返回整数的表达式。如果数字有小数部分,它将被截断。
注意:如果 number 参数超出 int 的范围,DATEADD() 函数将返回错误。
date: 日期时间值或解析为日期时间值的表达式。它可以是字符串表达式、表列或变量。字符串文字值必须解析为类型 DATE、DATETIME、DATETIMEOFFSET、DATETIME2、SMALLDATETIME 或 TIME
返回值
返回类型取决于为 date 参数提供的值。
如果 date 的值是字符串文字日期值,则 DATEADD() 返回 datetime 值。如果为 date 列提供了任何其他有效数据类型,则 DATEADD() 函数返回相同的数据类型。
在 DateTime 中添加天数
以下示例将 1 天添加到指定日期 '12/31/2021' (2021 年 12 月 31 日)。
SELECT DATEADD(day,1,'12/31/2021') AS Result
在上面的示例中,'day' 是 datepart,它指定应将数字添加到指定日期 '12/31/2021' 的天部分。第二个参数是要添加的数字,第三个参数是要添加指定参数的日期。

在 DateTime 中添加月份
在此示例中,对于月份 datepart,将 2 添加到日期 '12/31/2021'
。如您在结果中看到的,输入日期添加了两个月,DATEADD() 函数返回 2022 年 2 月 28 日,这是返回日期的最后一天。
SELECT DATEADD(month, 2, '12/31/2021') AS Result

您可以指定要添加到日期的负数,这将从指定的日期时间值中减去一个数字。
SELECT DATEADD(month, -2, '12/31/2021') AS Result

将 DATEADD() 与列一起使用
以下 DATEADD()
函数与 Employee
表的 HireDate
列一起使用,以返回 JoinDate
。将两周添加到 HireDate
列以返回 JoinDate
。
SELECT EmployeeID, FirstName, HireDate, DATEADD(wk, 2, HireDate) AS JoinDate
FROM Employee

确保指定的日期格式正确;否则将引发错误“varchar 数据类型到 datetime 数据类型的转换导致值超出范围。”
SELECT DATEADD(month, -2, '12/31/2021 123') AS Result
