SQL Server 2008對日期時間類型的改進

來源:互聯網
上載者:User

標籤:http   使用   ar   strong   for   資料   sp   art   on   

微軟在備受多年的爭議後,終於對日期時間資料類型開刀了,在新版的SQL Server 2008中一口氣增加了4種新的日期時間資料類型,包括:

  • Date:一個純的日期資料類型。
  • Time:一個純的時間資料類型。
  • DateTime2:新的日期時間類型,將精度提到到了100納秒。
  • DateTimeOffset:新的日期時間類型,在DateTime2的基礎上增加了時區部分。

下面是在SQL Server 2008中日期時間資料類型的一個簡單匯總表:

資料類型 格式 取值範圍 精度 儲存尺寸
date yyyy-mm-dd 0001-1-1
9999-12-31
1天 3位元組
time hh:mm:ss.nnnnnn 0:0:0.000000
23:59:59.999999
100納秒 3-5位元組
smalldatetime yyyy-mm-dd
hh:mm:ss
1900-1-1
2079-6-6
1分鐘 4位元組
datetime yyyy-mm-dd
hh:mm:ss:nnn
1753-1-1
9999-12-31
0.00333秒 8位元組
datetime2 yyyy-mm-dd
hh:mm:ss:nnnnnn
0001-1-1
9999-12-31
100納秒 6-8位元組
datetimeoffset yyyy-mm-dd
hh:mm:ss:nnnnnn
+|- hh:mm
0001-1-1
9999-12-31
(全球標準時間)
100納秒 8-10位元組

  為了使用這些資料類型,SQL Server 2008同時還引入了一系列的T-SQL函數。

三個用於獲得高精度系統時間的函數(因為是這三個函數都是取的作業系統時間,所以精度僅能達到10毫秒):

  • SYSDATETIME:返回運行SQL Server執行個體的伺服器的本地時間,資料類型是datetime2(7),不包含時區資訊。
  • SYSDATETIMEOFFSET:返回運行SQL Server執行個體的伺服器的本地時間及時區資訊,資料類型是datetimeoffset(7)。
  • SYSUTCDATETIME:返回運行SQL Server執行個體的伺服器的標準世界時間,資料類型是datetime2(7)。

用於時區轉換的函數:

  • SWITCHOFFSET(datetimeoffset, time_zone):根據輸入的世界時間以及時區資訊返回某個特定時區的資料,例如SWITCHOFFSET(‘2008-1-1 0:0:0 + 8:00‘, ‘-07:00‘)傳回值將是‘2007-12-31 9:00 -07:00‘,這樣我們就曉得我們元旦的時候老美的時間只是早上9:00。(有個有趣的情況是SWITCHOFFSET函數time_zone參數小時的前置0時不能省略的,就我們剛才用的那個例子如果time_zone參數寫成‘7:00‘就會報錯,必須寫成‘07:00‘,不過datetimeoffset資料裡那個時區部分小時的前置0時可以省略的,也就是說‘2008-1-1 0:0:0 + 8:00‘和‘2008-1-1 0:0:0 + 08:00‘都是可以接受的,對於時區中分鐘部分也是如此。不過建議大家養成良好的編碼習慣,所有前置0都不要省略。)
  • TODATETIMEOFFSET(datetime, offset):根據輸入的日期時間參數值和時區參數值返回一個世界時間值。例如TODATETIMEOFFSET(‘2008-1-1 0:0:0‘, ‘+08:00‘)傳回值是‘2008-1-1 0:0:0 + 08:00‘。

順便列舉一下SQL Server 2005中已經提供的日期時間函數,不過就不做介紹了:

  • 用於擷取系統時間的函數:CURRENT_TIMESTAMP,GETDATE,GETUTCDATE
  • 返回日期時間的指定部分:DATENAME,DATEPART,DAY,MONTH,YEAR
  • 計算日期時間差異的函數:DATEDIFF, DATEADD (必須注意的是datetime、smalldatetime資料類型支援+和-運算子,但是對於date、time、datetime2、datetimeoffset則不支援。)
  • 對日期時間進行計算的函數:DATEADD
  • 設定日期時間顯示格式的函數:@@DATEFIRST,SET DATEFIRST,SET DATEFORMAT,@@LANGUAGE,SET LANGUAGE,sp_helplanguage
  • 用於確認日期時間資料格式的函數:ISDATE

SQL Server 2008對日期時間類型的改進

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.