在SQL Server中,可以使用T-SQL DATEDIFF()函數返回兩個日期之間的差異。它適用于任何可以解析為time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表達式。因此,你也可以得到兩次的差值。
DATEDIFF()函數語法如下:
DATEDIFF ( datepart , startdate , enddate )
其中datepart是你想要比較的日期的一部分。startdate是第一個日期,enddate是結束日期。
它的工作方式是從enddate中減去startdate。
示例1
下面是一個基本的例子,我們可以算出兩個日期之間的天數:
select DATEDIFF(day, '2001-01-01', '2002-01-01') AS Result;
結果:
+----------+| Result ||----------|| 365 |+----------+
示例2
下面是另一個例子,我聲明了兩個變量并為它們分配了兩個不同的日期(我使用DATEADD()將第一個日期添加1年)。然后使用DATEDIFF()返回該日期的各個dateparts:
declare @date1 datetime2 = '2000-01-01 00:00:00.0000000';declare @date2 datetime2 = DATEADD(year, 1, @date1);select DATEDIFF( year, @date1, @date2 ) AS Years, DATEDIFF( quarter, @date1, @date2 ) AS Quarters, DATEDIFF( month, @date1, @date2 ) AS Months, DATEDIFF( week, @date1, @date2 ) AS Weeks, DATEDIFF( dayofyear, @date1, @date2 ) AS DayOfYear, DATEDIFF( day, @date1, @date2 ) AS Days;
結果:
+---------+------------+----------+---------+-------------+--------+| Years | Quarters | Months | Weeks | DayOfYear | Days ||---------+------------+----------+---------+-------------+--------|| 1 | 4 | 12 | 53 | 366 | 366 |+---------+------------+----------+---------+-------------+--------+
示例3
如前所述,你還可以返回日期之間的時間部分。下面是返回日期/時間值之間的小時、分鐘和秒數的例子:
declare @date1 datetime2 = '2000-01-01 00:00:00.0000000';declare @date2 datetime2 = DATEADD(hour, 1, @date1);select DATEDIFF( hour, @date1, @date2 ) AS Hours, DATEDIFF( minute, @date1, @date2 ) AS Minutes, DATEDIFF( second, @date1, @date2 ) AS Seconds;
結果:
+---------+-----------+-----------+| Hours | Minutes | Seconds ||---------+-----------+-----------|| 1 | 60 | 3600 |+---------+-----------+-----------+
示例4
下面是一個獲取兩個日期/時間值之間的毫秒、微秒和納秒數的例子:
declare @date1 datetime2 = '2000-01-01 00:00:00.0000000';declare @date2 datetime2 = DATEADD(millisecond, 1, @date1);select DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds, DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds, DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;
結果:
+----------------+----------------+---------------+| Milliseconds | Microseconds | Nanoseconds ||----------------+----------------+---------------|| 1 | 1000 | 1000000 |+----------------+----------------+---------------+
示例5 - Error錯誤!
如果你嘗試做一些極端的事情,比如,返回100年后的納秒數,你會得到一個錯誤。這是因為DATEDIFF()返回一個int值,100年內的納秒數比int數據類型能夠處理的納秒數還要多。
如果你試著這么做會發生什么呢?
declare @date1 datetime2 = '2000-01-01 00:00:00.0000000';declare @date2 datetime2 = DATEADD(year, 100, @date1);select DATEDIFF( millisecond, @date1, @date2 ) AS Milliseconds, DATEDIFF( microsecond, @date1, @date2 ) AS Microseconds, DATEDIFF( nanosecond, @date1, @date2 ) AS Nanoseconds;
結果:
The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.
當然如果你真的必須找出100年內有多少納秒,那么可以使用DATEDIFF_BIG()函數。這個函數返回一個帶符號的bigint數據類型,它允許你返回比DATEDIFF()更大的值。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片僅供參考)歡迎觀看本篇文章,小勉來為大家解答以上問題。御前四寶主題曲,主題曲是得意的笑很多人還不知道,現在讓我們一起來看看吧!1、主題曲是《得意的笑》?!?03010》是2004年由北京電影制片廠出品的一部清代原創搞笑喜劇,由、沈聯合執導,等主演。2、劇情簡介:康熙年間,康熙帝與一個和尚銀雪(實際上是康熙之父指定的)打賭,怪和尚答應嫁給街上的兩個乞丐;納蘭容若,首相珀爾的兒子;海軍提督施...
在境外資本市場中,香港的上市要求是比較高的。很多企業,尤其是一些沒有盈利的企業,或者早期投入大、不能立刻產生利潤的企業,往往很難在香港上市。那么,香港創業板上市多少錢?香港創業板上市需要什么條件?香港上市有哪些法律問題需要注意?一起來看看吧!香港創業板上市多少錢?香港主板市場上市只要求企業有三年以上業務記錄,上市時市值不低于2億港元,過往三年合計盈利不低于5000萬港元;如在香港創業板,上市標準只...
理財付融寶是什么?根據付融寶的背景來看,付融寶是比較領先的投資平臺推出的。江蘇寶貝金融信息服務有限公司成立于2009年9月,是經工商行政管理部門批準的金融信息服務企業,是“南京電子商務協會理事單位”。公司憑借多年在金融、擔保、互聯網行業的積累,完善了產品、融資、理財、風險控制、金融、客戶服務等完整的金融服務產業鏈,成長為具有卓越獨立能力的金融創新企業。理財付融寶有哪些理財產...