SQL Server(00):日期時間函數




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(Quarter,getdate()) --輸出 1 現在是第幾季度
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 年份相減之后的確是1
select datediff(day,'2011-11-11','2012-12-12')     --輸出 397 兩個日期相差的天數
select * from test where datediff(day,Rq,getdate()) = 0 --其中Rq為日期列,查詢當前的記錄:?etdate()減去Rq列的值為0,Rq列的值與今天相減,號數為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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM