SQL Server DATEADD函數(shù)詳解
一、DATEADD函數(shù)簡(jiǎn)介
在SQL Server中,DATEADD函數(shù)用于在日期中添加或減去指定的時(shí)間間隔。這個(gè)函數(shù)能夠處理日期天數(shù)、小時(shí)、分鐘、秒、毫秒等各種單位,返回一個(gè)新日期。
DATEADD函數(shù)的基本用法如下:
DATEADD(datepart,interval,datetime)
其中參數(shù)的解釋如下:
datepart: 需要添加的日期部分,如年(YEAR)、季度(QUARTER)、月(MONTH)、周(WEEK)、天(DAY)、小時(shí)(HOUR)、分鐘(MINUTE)、秒(SECOND)等。
interval: 需要添加的時(shí)間間隔,可以為正數(shù)或負(fù)數(shù)。
datetime: 要進(jìn)行加、減操作的日期。
DATEADD(datepart,number,date)
date 參數(shù)是合法的日期表達(dá)式。number 是您希望添加的間隔數(shù);對(duì)于未來(lái)的時(shí)間,此數(shù)是正數(shù),對(duì)于過(guò)去的時(shí)間,此數(shù)是負(fù)數(shù)。
datepart 參數(shù)可以是下列的值:
datepart 縮寫(xiě)
年 yy, yyyy
季度 qq, q
月 mm, m
年中的日 dy, y
日 dd, d
周 wk, ww
星期 dw, w
小時(shí) hh
分鐘 mi, n
秒 ss, s
毫秒 ms
微妙 mcs
納秒 ns

下面我們將從多個(gè)方面詳細(xì)介紹DATEADD函數(shù)的使用。
二、按不同單位進(jìn)行操作
在DATEADD函數(shù)中,可以根據(jù)需求選擇不同的日期部分。
1、按年進(jìn)行操作:
SELECT DATEADD(YEAR,1,'2019-02-28')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2020-02-28。
2、按月進(jìn)行操作:
SELECT DATEADD(MONTH,3,'2019-02-28')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-05-28。
3、按日進(jìn)行操作:
SELECT DATEADD(DAY,7,'2019-02-28')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-03-07。
4、按小時(shí)進(jìn)行操作:
SELECT DATEADD(HOUR,2,'2019-02-28 13:45:23')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-02-28 15:45:23。
5、按分鐘進(jìn)行操作:
SELECT DATEADD(MINUTE,15,'2019-02-28 13:45:23')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-02-28 14:00:23。
6、按秒進(jìn)行操作:
SELECT DATEADD(SECOND,30,'2019-02-28 13:45:23')
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-02-28 13:45:53。
三、使用變量進(jìn)行操作
在使用DATEADD函數(shù)時(shí),也可以使用變量來(lái)進(jìn)行操作。
DECLARE @startdate DATETIME SET @startdate = '2019-02-28 13:45:23' SELECT DATEADD(HOUR,2,@startdate)
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2019-02-28 15:45:23。
四、多次操作
在DATEADD函數(shù)中,也可以進(jìn)行多次操作。
SELECT DATEADD(YEAR,1,DATEADD(MONTH,3,DATEADD(DAY,7,'2019-02-28')))
運(yùn)行以上代碼,會(huì)返回一個(gè)新日期:2020-05-07。
五、與其他函數(shù)聯(lián)合使用
在實(shí)際應(yīng)用中,DATEADD函數(shù)還可以與其他的函數(shù)聯(lián)合使用。
1、使用YEAR函數(shù)獲取年份:
SELECT YEAR(DATEADD(YEAR,1,'2019-02-28'))
運(yùn)行以上代碼,會(huì)返回一個(gè)整數(shù):2020。
2、使用DATENAME函數(shù)獲取月份名稱:
SELECT DATENAME(MONTH,DATEADD(MONTH,3,'2019-02-28'))
運(yùn)行以上代碼,會(huì)返回一個(gè)字符串:May。
六、錯(cuò)誤處理
在使用DATEADD函數(shù)時(shí),如果指定的日期部分或時(shí)間間隔不合法,會(huì)出現(xiàn)一些錯(cuò)誤。以下是一些常見(jiàn)的錯(cuò)誤:
1、指定的日期部分不合法:
SELECT DATEADD(test,1,'2019-02-28')
運(yùn)行以上代碼,會(huì)返回一個(gè)錯(cuò)誤:The datepart "test" is not supported by date function dateadd for data type date.
2、指定的時(shí)間間隔為0:
SELECT DATEADD(MONTH,0,'2019-02-28')
運(yùn)行以上代碼,會(huì)返回一個(gè)錯(cuò)誤:The dateadd function requires that the specified interval be nonzero.
3、指定的日期不合法:
SELECT DATEADD(YEAR,1,'2019-02-30')
運(yùn)行以上代碼,會(huì)返回一個(gè)錯(cuò)誤:The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
七、總結(jié)
本文介紹了SQL Server中的DATEADD函數(shù),講解了它的基本用法、按不同單位進(jìn)行操作、使用變量進(jìn)行操作、多次操作、與其他函數(shù)聯(lián)合使用、錯(cuò)誤處理等方面內(nèi)容。使用DATEADD函數(shù)可以很方便地對(duì)日期進(jìn)行操作,提升了SQL Server的數(shù)據(jù)處理能力。
相關(guān)文章
SQL Server中將數(shù)據(jù)導(dǎo)出為XML和Json方法分享
這篇文章主要介紹了SQL Server中將數(shù)據(jù)導(dǎo)出為XML和Json方法分享,本文使用PowerShell中的BCP命令實(shí)現(xiàn)導(dǎo)出為文件,需要的朋友可以參考下2015-02-02
SQL Server錯(cuò)誤代碼大全及解釋(留著備用)
SQL Server錯(cuò)誤代碼大全及解釋,以后遇到錯(cuò)誤就可以根據(jù)對(duì)照表查看了2012-06-06
解決無(wú)法在unicode和非unicode字符串?dāng)?shù)據(jù)類型之間轉(zhuǎn)換的方法詳解
本篇文章是對(duì)無(wú)法在unicode和非unicode字符串?dāng)?shù)據(jù)類型之間轉(zhuǎn)換的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
數(shù)據(jù)庫(kù) MySQL中文亂碼解決辦法總結(jié)
這篇文章主要介紹了數(shù)據(jù)庫(kù) MySQL中文亂碼解決辦法總結(jié)的相關(guān)資料,數(shù)據(jù)庫(kù)保存中文字符,所以經(jīng)常遇到數(shù)據(jù)庫(kù)亂碼情況,這里提供了幾種方法,需要的朋友可以參考下2017-03-03
SqlServer常用函數(shù)及時(shí)間處理小結(jié)
這篇文章主要介紹了SqlServer常用函數(shù)及時(shí)間處理小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
[圖文]三分鐘學(xué)會(huì)Sql Server的復(fù)制功能
有兩個(gè)服務(wù)器,裝了兩個(gè)數(shù)據(jù)庫(kù),一個(gè)是主的,一個(gè)是備用的,下面的的功能就將主數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù),實(shí)時(shí)同步到備用數(shù)據(jù)庫(kù)上,使他們的數(shù)據(jù)內(nèi)容,基本上保持一致。2008-07-07
SQL Server簡(jiǎn)單實(shí)現(xiàn)數(shù)據(jù)的日?qǐng)?bào)和月報(bào)功能
這篇文章主要介紹了SQL Server簡(jiǎn)單實(shí)現(xiàn)數(shù)據(jù)的日?qǐng)?bào)和月報(bào)功能,結(jié)合實(shí)例形式對(duì)比分析了SQL Server實(shí)現(xiàn)當(dāng)日及當(dāng)月數(shù)據(jù)的查詢功能相關(guān)技巧,需要的朋友可以參考下2016-06-06

