溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

SQL Server中的DATEADD怎么使用

發(fā)布時(shí)間:2021-12-23 09:32:32 來(lái)源:億速云 閱讀:486 作者:iii 欄目:軟件技術(shù)

這篇文章主要講解了“SQL Server中的DATEADD怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SQL Server中的DATEADD怎么使用”吧!

句法

與類(lèi)似的功能一樣,  DATEADD 可以對(duì)日期和時(shí)間進(jìn)行算術(shù)運(yùn)算。語(yǔ)法很簡(jiǎn)單:

DATEADD (datepart, number, date)

該  number 部分必須是整數(shù),并且必須在日期部分的可接受值范圍內(nèi)。

該  datepart 部分必須是以下日期部分之一(我們?cè)谥暗?   帖子中看到  過(guò)):

DATEPART縮略語(yǔ)
是的,yyyy
25美分硬幣qq,q
mm,m
DAYOFYEARdy,y
dd,d
wk,ww
平日dw,w
小時(shí)HH
分鐘mi,n
第二ss,s
毫秒女士
微秒MCS
納秒NS

雖然  DATEADD 支持上表中所示的縮寫(xiě),但我們應(yīng)盡一切努力使用完整表達(dá)式來(lái)確保代碼的清晰度。如果我們使用縮寫(xiě),SQL Server不會(huì)運(yùn)行得更快。

另請(qǐng)注意,雖然我們可以使用納秒加或減  DATEADD,但DATETIME2 數(shù)據(jù)類(lèi)型的最小粒度為  100納秒,因此需要考慮舍入。

退貨類(lèi)型

DATEADD 將使用date 參數(shù)中使用的數(shù)據(jù)類(lèi)型返回結(jié)果  。例如,如果我們使用以YYYYMMDD 格式表示日期的文字字符串  ,則返回類(lèi)型將是一個(gè)  DATETIME 值,因?yàn)槲淖肿址浑[式轉(zhuǎn)換為  DATETIME。

SELECT DATEADD(DAY,1,'20181031')
- 返回DATETIME值'2018-11-01 00:00:00.000'

但是,如果我們使用  DATETIME2 輸入值,結(jié)果將是一個(gè)  DATETIME2 值。

SELECT DATEADD(納秒,100,CAST('20181031'  AS DATETIME2))
- 返回DATETIME2值'2018-10-31 00:00:00.0000001'

加減

我們之前看到過(guò)  DATEADD 可以用于加法    減法,這使得向后和向前計(jì)算值變得容易。我們假設(shè)我們需要計(jì)算100天前的時(shí)間點(diǎn)。如果我們以今天為出發(fā)點(diǎn),它將如下所示:

DECLARE  @dt DATETIME2 = SYSUTCDATETIME();
SELECT  @dt  AS [TimeNow],DATEADD(DAY, - 100,@ dt)AS [TimeThen];

注意在部分中使用負(fù)號(hào)  number 。結(jié)果如下:

TimeNow: 2018-10-31 09:17:21.7866500
TimeThen: 2018-07-23 09:17:21.7866500

幾個(gè)月的算術(shù)

關(guān)于這個(gè)功能的最后一個(gè)想法。在增加或減少月數(shù)時(shí),請(qǐng)注意不包含31天的月份。例如,讓我們?cè)?018年2月底添加一個(gè)月:

SELECT DATEADD(MONTH,1,'20180228')
- 返回DATETIME值'20180328'

但是,如果我們?cè)?018年1月底添加一個(gè),兩個(gè)或三個(gè)月,我們會(huì)看到不同的結(jié)果:

SELECT DATEADD(MONTH,1,'20180131');
- 返回DATETIME值'20180228'

SELECT DATEADD(MONTH,2,'20180131');
- 返回DATETIME值'20180331'

SELECT DATEADD(MONTH,3,'20180131');
- 返回DATETIME值'20180430'

DATEADD 是一個(gè)非常有用的系統(tǒng)函數(shù)在T-SQL中添加和減去日期和時(shí)間的值,我廣泛使用。只要我們記住它圍繞數(shù)據(jù)類(lèi)型和數(shù)月長(zhǎng)度的怪癖,它就會(huì)非常強(qiáng)大。

感謝各位的閱讀,以上就是“SQL Server中的DATEADD怎么使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)SQL Server中的DATEADD怎么使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI