首頁 > 軟體

SQL Server中日期時間函數的用法詳解

2022-05-21 19:00:41

1、getdate():獲取當前日期

返回當前SQLServer伺服器所在計算機的日期和時間。返回值舍入到最近的秒小數部分,精度為.333秒資料庫十七偏移量不包含在內。

select getdate() --輸出 2013-03-09 15:16:00.570

2、getutcdate():獲取UTC時間值

select GETUTCDATE() -- 2013-06-18 08:02:53.253

3、year():獲取年度資訊

year函數以int資料型別的格式返回特定日期的年度資訊。其中的date資料時一個可以解析為time、date、smalldatetime、datetime、datetime2或datetimeoffset值的表示式,列表示式、使用者定義的變數或字串文字。

select year(getdate()) --輸出 2013

4、month():獲取月份資訊

month函數以int資料型別的格式返回特定日期的月份資訊。

select month(getdate()) --輸出 3

5、day():獲取天數資訊

day函數以int資料型別的格式返回特定日期的天數資訊。

select day(getdate()) --輸出 9

6、datepart():獲取任意時間部分

datepart函數以int資料型別的格式返回某個日期時間資料的指定部分。

datepart( datepart , date資料 )

datepart引數:特定的要返回的資料的格式程式碼。Datepart部分的取值如下表所示:

說明取值
返回年度資訊Year、YYYY、YY
返回月份資訊Month、MM、M
返回日期資訊Day、DD、D
返回周資訊Week、WK、WW
返回每週星期幾資訊WeekDay、DW
返回季度資訊Quarter、QQ、Q
返回一年中第幾天的資訊DayOfYear、DY、Y
返回小時資訊Hour、HH
返回分鐘資訊Minute、MI、N
返回秒資訊Second、SS、S
返回毫秒資訊MillSecond、MS
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,DATEPART(dd,OrderDate) AS OrderDay
FROM Orders WHERE OrderId=1

7、datename():獲取任意時間部分

返回表示指定日期的指定日期部分的字串。

SELECT DateName(Quarter,GetDate()) --輸出 2(6月)

8、dateadd():日期加法

dateadd函數將某個日期加上一個特定的時間間隔值後返回datetime資料型別的值。

dateadd (datepart,numer,date資料)

numer引數:用於與detepart相加的值。如果指定了非整數值,則將捨棄該值的小數部分。

select getdate()    --輸出 2013-03-09 16:03:59.293
select dateadd(YYYY,10,getdate())    --加了十年    輸出2023-03-09 16:04:36.893

8、datediff():日期差異

datediff函數將兩個特定的日期資料相減,得到的結果可以按照detepart指定的格式返回時間間隔。

datediff(datepart,startdate,enddate)

執行中將使用enddate減以startdate的值,如果startdate晚於enddate將返回負值。執行結果如果超出整數範圍將提示錯誤。

select datediff(YYYY,'2011-11-11','2012-12-12')    --1
select datediff(day,'2011-11-11','2012-12-12')     --397
select * from test where datediff(day,Rq,getdate()) = 0 --返回當天的資料:

9、SQLServer 2008中新增的日期時間型函數

1、sysdatetime():獲取系統時間

sysdatetime函數以datetime2(7)資料型別的格式返回當前系統的日期和時間。返回值有七個小數位,但只精確到10毫秒。資料庫偏移量未包含在內。

SELECT SYSDATETIME()  --2013-06-17 22:17:59.0610211

2、sysdatetimeoffset():獲取當前日期和時間

sysdatetimeoffset函數以datetimeoffset(7)資料型別的格式返回當前系統的日期和時間。返回值有七個小數位,但只精確到10毫秒。資料庫時區偏移量包含在內。

SELECT sysdatetimeoffset()  --2013-06-17 22:18:30.1788009 +08:00

3、sysutcdatetime():獲取系統UTC時間

select SysUTCDateTime() -- 2013-06-18 08:09:17.8229505

10、current_timestamp:當前資料庫系統時間戳

返回當前資料庫系統時間戳,返回值的型別為 datetime,並且不含資料庫時區偏移量。 此值得自執行 SQL Server 範例的計算機的作業系統。等價於GetDate();

SELECT CURRENT_TIMESTAMP --2013-06-18 16:16:10.007

11、switchoffset():更改時間偏移量

SwitchOffset更改 DateTimeOffset 值的時區偏移量並保留 UTC 值。

SELECT SysDateTimeOffset()    -- 2013-06-18 16:40:34.4322865 +08:00
ELECT SWITCHOFFSET (SysDateTimeOffset(), '+07:00') --2013-06-18 15:40:53.5403794 +07:00

12、todatetimeoffset():返回從 datetime2 表示式轉換的 datetimeoffset 值 。

返回從 datetime2 表示式轉換而來的一個 datetimeoffset 值。

SELECT SysDateTimeOffset()    -- 2013-06-18 16:40:34.4322865 +08:00
SELECT TodateTimeOffset(GetDate(),'+07:00') --2013-06-18 16:46:10.537 +07:00

留意到以上程式碼是隻更改時區,但是不更改時值。

SysDateTime 和 SysUTCDate 在秒小數部分精度上要比 GetDate 和 GetUTCDate 高。 SysDateTimeOffset 包含系統時區偏移量。 SysDateTime、SysUTCDate 和 SysDateTimeOffset 可分配給採用任意日期和時間型別的變數。

13、isdate():判斷是否為日期資料

ISDATE函數可以驗證某個輸入值是否為有效的日期資料, 若表示式為有效日期則返回 1 ,否則返回 0 。

select isdate('2012-12-12')    -- 輸出1
select isdate('xxxx-12-12')  -- 輸出0

14、獲取當天零點

select convert(datetime,convert(varchar(10),getdate(),120))
select dateadd(day,datediff(day,0,getdate()),0)

15、官方完整日期函數清單:

http://technet.microsoft.com/zh-cn/library/ms186724.aspx

到此這篇關於SQL Server日期時間函數的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com