SQL中如何使用datediff函數(shù)-創(chuàng)新互聯(lián)

這篇文章主要介紹SQL中如何使用datediff函數(shù),文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)從2013年成立,先為茶陵等服務(wù)建站,茶陵等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為茶陵企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

在SQL Server中,可以使用T-SQL DATEDIFF()函數(shù)返回兩個日期之間的差異。它適用于任何可以解析為time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表達式。因此,你也可以得到兩次的差值。

DATEDIFF()函數(shù)語法如下:

DATEDIFF ( datepart , startdate , enddate )

其中datepart是你想要比較的日期的一部分。startdate是第一個日期,enddate是結(jié)束日期。

它的工作方式是從enddate中減去startdate。

示例1

下面是一個基本的例子,我們可以算出兩個日期之間的天數(shù):

SELECT DATEDIFF(day, '2001-01-01', '2002-01-01') AS Result;

結(jié)果:

+----------+
| 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;

結(jié)果:

+---------+------------+----------+---------+-------------+--------+
| Years   | Quarters   | Months   | Weeks   | DayOfYear   | Days   |
|---------+------------+----------+---------+-------------+--------|
| 1       | 4          | 12       | 53      | 366         | 366    |
+---------+------------+----------+---------+-------------+--------+

示例3

如前所述,你還可以返回日期之間的時間部分。下面是返回日期/時間值之間的小時、分鐘和秒數(shù)的例子:

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;

結(jié)果:

+---------+-----------+-----------+
| Hours   | Minutes   | Seconds   |
|---------+-----------+-----------|
| 1       | 60        | 3600      |
+---------+-----------+-----------+

示例4

下面是一個獲取兩個日期/時間值之間的毫秒、微秒和納秒數(shù)的例子:

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;

結(jié)果:

+----------------+----------------+---------------+
| Milliseconds   | Microseconds   | Nanoseconds   |
|----------------+----------------+---------------|
| 1              | 1000           | 1000000       |
+----------------+----------------+---------------+

示例5 - Error錯誤!

如果你嘗試做一些極端的事情,比如,返回100年后的納秒數(shù),你會得到一個錯誤。這是因為DATEDIFF()返回一個int值,100年內(nèi)的納秒數(shù)比int數(shù)據(jù)類型能夠處理的納秒數(shù)還要多。

如果你試著這么做會發(fā)生什么呢?

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;

結(jié)果:

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年內(nèi)有多少納秒,那么可以使用DATEDIFF_BIG()函數(shù)。這個函數(shù)返回一個帶符號的bigint數(shù)據(jù)類型,它允許你返回比DATEDIFF()更大的值。

以上是SQL中如何使用datediff函數(shù)的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!

當前文章:SQL中如何使用datediff函數(shù)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article10/cdihdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、GoogleChatGPT、網(wǎng)站設(shè)計、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司