您好,登錄后才能下訂單哦!
這篇文章主要講解了“SQL Server中的DATEADD怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“SQL Server中的DATEADD怎么使用”吧!
與類似的功能一樣, DATEADD
可以對日期和時間進行算術運算。語法很簡單:
DATEADD (datepart, number, date)
該 number
部分必須是整數,并且必須在日期部分的可接受值范圍內。
該 datepart
部分必須是以下日期部分之一(我們在之前的
帖子中看到 過):
DATEPART | 縮略語 |
年 | 是的,yyyy |
25美分硬幣 | qq,q |
月 | mm,m |
DAYOFYEAR | dy,y |
天 | dd,d |
周 | wk,ww |
平日 | dw,w |
小時 | HH |
分鐘 | mi,n |
第二 | ss,s |
毫秒 | 女士 |
微秒 | MCS |
納秒 | NS |
雖然 DATEADD
支持上表中所示的縮寫,但我們應盡一切努力使用完整表達式來確保代碼的清晰度。如果我們使用縮寫,SQL Server不會運行得更快。
另請注意,雖然我們可以使用納秒加或減 DATEADD
,但DATETIME2
數據類型的最小粒度為 100納秒,因此需要考慮舍入。
DATEADD
將使用date
參數中使用的數據類型返回結果 。例如,如果我們使用以YYYYMMDD
格式表示日期的文字字符串 ,則返回類型將是一個 DATETIME
值,因為文字字符串被隱式轉換為 DATETIME
。
SELECT DATEADD(DAY,1,'20181031')
- 返回DATETIME值'2018-11-01 00:00:00.000'
但是,如果我們使用 DATETIME2
輸入值,結果將是一個 DATETIME2
值。
SELECT DATEADD(納秒,100,CAST('20181031' AS DATETIME2))
- 返回DATETIME2值'2018-10-31 00:00:00.0000001'
我們之前看到過 DATEADD
可以用于加法 和 減法,這使得向后和向前計算值變得容易。我們假設我們需要計算100天前的時間點。如果我們以今天為出發點,它將如下所示:
DECLARE @dt DATETIME2 = SYSUTCDATETIME();
SELECT @dt AS [TimeNow],DATEADD(DAY, - 100,@ dt)AS [TimeThen];
注意在部分中使用負號 number
。結果如下:
TimeNow: 2018-10-31 09:17:21.7866500
TimeThen: 2018-07-23 09:17:21.7866500
關于這個功能的最后一個想法。在增加或減少月數時,請注意不包含31天的月份。例如,讓我們在2018年2月底添加一個月:
SELECT DATEADD(MONTH,1,'20180228')
- 返回DATETIME值'20180328'
但是,如果我們在2018年1月底添加一個,兩個或三個月,我們會看到不同的結果:
SELECT DATEADD(MONTH,1,'20180131');
- 返回DATETIME值'20180228'
SELECT DATEADD(MONTH,2,'20180131');
- 返回DATETIME值'20180331'
SELECT DATEADD(MONTH,3,'20180131');
- 返回DATETIME值'20180430'
DATEADD
是一個非常有用的系統函數在T-SQL中添加和減去日期和時間的值,我廣泛使用。只要我們記住它圍繞數據類型和數月長度的怪癖,它就會非常強大。
感謝各位的閱讀,以上就是“SQL Server中的DATEADD怎么使用”的內容了,經過本文的學習后,相信大家對SQL Server中的DATEADD怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。