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

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#ModifyDateandTimeValues

到此這篇關於SQL Server日期時間函數的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: