您好,登錄后才能下訂單哦!
這篇文章主要講解了“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 |
DAYOFYEAR | dy,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納秒,因此需要考慮舍入。
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
關(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)注!
免責(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)容。