SQL Server 2008對日期時間型別的改進
微軟在備受多年的爭議後,終於對日期時間資料型別開刀了,在新版的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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9079672/viewspace-162841/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sql server中對時間日期的操作SQLServer
- SQL SERVER 日期和時間資料型別及函式 (Transact-SQL)SQLServer資料型別函式
- SQL server 日期與時間操作SQLServer
- sql server日期時間轉字串SQLServer字串
- Hibernate、JAVA、SQL對應基本日期、時間資料型別JavaSQL資料型別
- SQL SERVER 時間和日期函式SQLServer函式
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- SQL Server中的日期和時間:DATEADD()SQLServer
- SQL Server 裡的日期和時間函式SQLServer函式
- Sql Server系列:日期和時間函式SQLServer函式
- SQL Server裡獲得不包含時間部分的日期SQLServer
- 【MySQL資料型別2之--日期時間型別】MySql資料型別
- 在SQL Server中獲得不包含時間部分的日期SQLServer
- XSD 日期和時間資料型別資料型別
- sql server對於日期的處理SQLServer
- SQL Server 2008中的格式化日期SQLServer
- SQL 獲取SQL Server中兩個日期之間的所有日期SQLServer
- PostgreSQL中對日期時間進行分組SQL
- [置頂] SQL日期型別SQL型別
- SQL 獲取SQL Server中日期最近7天之間的所有日期SQLServer
- Sql Server函式全解(4):日期和時間函式SQLServer函式
- Sql Server函式全解(四)日期和時間函式SQLServer函式
- MySql和SQL Server資料型別 對比MySqlServer資料型別
- 在SQL Server中對檢視進行增刪改SQLServer
- Oracle對日期時間操作Oracle
- 有關sql時間型別及格式SQL型別
- TypeScript 3.3釋出:改進了聯合型別呼叫和構建時間TypeScript型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- 識別SQL Server 2008的瓶頸SQLServer
- SQL SERVER與C#的資料型別對應表SQLServerC#資料型別
- sql server日期格式 sqlserver的日期格式SQLServer
- sql server型別轉換SQLServer型別
- sql server sysobjects xtype型別SQLServerObject型別
- 在PL/SQL中使用日期型別SQL型別
- sql server中對日期欄位值的比較SQLServer
- 時間型別型別
- SQL Server 2008各版本區別SQLServer
- 時間型別和時間戳型別時間戳