SQL Server中的日期和時間:DATEADD()
我們現在處於SQL Server和Azure SQL資料庫中關於日期和時間的長篇系列的主頁。
本週我們將討論日期和時間中我最喜歡的T-SQL函式之一:
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中新增和減去日期和時間的值,我廣泛使用。
只要我們記住它圍繞資料型別和數月長度的怪癖,它就會非常強大。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2221522/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 獲取SQL Server中兩個日期之間的所有日期SQLServer
- SQL SERVER 日期和時間資料型別及函式 (Transact-SQL)SQLServer資料型別函式
- SQL中DATEADD和DATEDIFF的使用方法SQL
- SQL 獲取SQL Server中日期最近7天之間的所有日期SQLServer
- sql server日期格式 sqlserver的日期格式SQLServer
- SQL SERVER 日期格式化、日期和字串轉換SQLServer字串
- 日期和時間
- Pandas中時間和日期處理
- Python 日期和時間Python
- Java日期和時間Java
- 日期和時間格式
- datetime日期和時間
- Java 中的時間日期 APIJavaAPI
- sql server對於日期的處理SQLServer
- 字串和日期時間的處理字串
- Java 8 日期和時間的APIJavaAPI
- MySQL 的日期和時間函式MySql函式
- Qt:獲取日期和時間QT
- 【Python基礎】日期和時間Python
- JavaScript 日期和時間的格式化JavaScript
- win10如何修改時間日期格式 調整時間格式和日期格式的方法Win10
- Java 日期和時間 API:實用技巧與示例 - 輕鬆處理日期和時間JavaAPI
- 在Linux中,如何檢視當前日期和時間?Linux
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- 不一樣的 SQL Server 日期格式化SQLServer
- SQL Server各種日期計算方法SQLServer
- JDK1.8-新的日期和時間APIJDKAPI
- GO語言————4.8 時間和日期Go
- hive sql 13位毫秒時間戳轉日期HiveSQL時間戳
- 日期時間類
- iOS日期時間iOS
- 細說PHP筆記08(第12章)--日期和時間,建立時間戳,mktime轉換unix時間戳,獲取字串時間,獲得日期和時間資訊,日期和時間格式化輸出,microtime()獲取微秒數PHP筆記時間戳字串
- SQL Server 語句日期格式查詢方法SQLServer
- Qt中利用定時器QTimer實時顯示當前日期和時間QT定時器
- SQL Server ManagementS tudio無法修改表,超時時間已到SQLServer
- Python 輸出當前日期和時間Python
- 讓history命令顯示日期和時間
- XSD 日期和時間資料型別資料型別