国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SQL Server 2008 中新的日期時間數(shù)據(jù)類型

SQL Server 2008 終于發(fā)布新版了,雖然還只是另一個社區(qū)測試版而非完全版。每當新軟件發(fā)布,大家最關(guān)系的問得最多的問題就是:有些什么新特性?SQL Server 2008有很多新功能和新工具。不過,本文還是主要為大家介紹SQL Server 2008的新數(shù)據(jù)類型,并對DATETIME數(shù)據(jù)類型的功能進行專門討論。

  SQL Server 2008中DATETIME功能的最大轉(zhuǎn)變就是引入了四種DATETIME數(shù)據(jù)類型,分別為DATE、TIME、DATETIMEOFFSET和DATETIME2;此外還增加了新的DATETIME函數(shù)功能。

  下面首先來討論一下四種新數(shù)據(jù)類型的功能和用法。

  DATE數(shù)據(jù)類型

  在SQL Server 2005中,沒有專門只用來存儲日期(不包括時間)的特定數(shù)據(jù)類型,只能使用DATETIME或SMALLDATETIME數(shù)據(jù)類型來完成此操作。但是,當你輸入日期之后,會顯示還有一個時間的組分需要輸入,其初始顯示為12:00 AM。如果只想在輸出結(jié)果中顯示日期那一部分,就必須修改輸出格式。大部分情況下,可以使用getdate()函數(shù)來存儲當前日期。要在SQL Server 2005中的SMALLDATETIME或DATETIME列中保存getdate()的函數(shù)值,同時也會保存了當前的時間,而這可能會引發(fā)很多問題。舉例而言,如果你使用以下的語句,想根據(jù)給定的日期來搜索記錄:

  SELECT * FROM tblDate Where [Date] = '2007-12-01'

  由于Date列里含有時間組分,這個命令將無法正常執(zhí)行, 因此,你必須執(zhí)行以下的查詢操作:

  SELECT * FROM tblDate Where datediff(d,[Date],‘2007-12-01’) =0

  盡管上面的查詢操作可以行得通,不過Date列中符合要求的索引很可能不會被使用。不過你還是可以使用上面的查詢操作調(diào)出少量的記錄。雖然可以利用工作區(qū),但很明顯有必要增加一種去掉時間值的DATE數(shù)據(jù)類型來減少潛在的錯誤。來看看以下的語法:
     DECLARE@dtasDATE
  SET@dt=getdate()
  PRINT@dt

  以上腳本的輸出結(jié)果只有日期,不包括時間部分。DATE數(shù)據(jù)類型的取值范圍從0001-01-01到9999-12-31。

  TIME數(shù)據(jù)類型

  就像日期數(shù)據(jù)類型一樣,如果你只想存儲時間數(shù)據(jù)而不需要日期部分就可以利用TIME數(shù)據(jù)類型。下面就是利用TIME數(shù)據(jù)類型進行查詢的例子:

  DECLARE@dtasTIME
  SET@dt=getdate()
  PRINT@dt

  以上腳本輸出結(jié)果只包含時間部分,其取值范圍從00:00:00.0000000到23:59:59.9999999。

  DATETIME2數(shù)據(jù)類型

  新的DATETIME2數(shù)據(jù)類型也是一種數(shù)據(jù)時間混合的數(shù)據(jù)類型,不過其時間部分秒數(shù)的小數(shù)部分可以保留不同位數(shù)的值,比原來的DATETIME數(shù)據(jù)類型取值范圍要廣。用戶可以根據(jù)自己的需要通過設置不同的參數(shù)來,設定小數(shù)位數(shù),最高可以設到小數(shù)點后七位(參數(shù)為7),也可以不要小數(shù)部分(參數(shù)為0),以此類推。以下是利用DATETIME2的查詢語句:

  DECLARE@dt7datetime2(7)
  SET@dt7=Getdate()
  PRINT@dt7

  該語句的輸出結(jié)果中時間的秒數(shù)部分精確到小數(shù)點后第七位。

  DATETIMEOFFSET數(shù)據(jù)類型

  如果把日期和時間數(shù)據(jù)保存在一列里,是不會提示該日期和時間屬于哪一個時區(qū)的。時區(qū)的提示非常重要,特別是當你處理數(shù)據(jù)包含了多個不同時區(qū)的國家時。新的DATETIMEOFFSET數(shù)據(jù)類型可以定義一個日期和時間組合,其中時間以24小時制顯示,并帶有時區(qū)提示。下面的語句說明了DATETIMEOFFSET數(shù)據(jù)類型的用法:

  DECLARE@dtDATETIMEOFFSET(0)
  SET@dt='2007-12-0421:20:30-1:00'
  DECLARE@dt1DATETIMEOFFSET(0)
  SET@dt1='2007-12-0421:20:30+5:00'
  SELECTDATEDIFF(hh,@dt,@Dt1)

      DateTime函數(shù)

  目前我們可以在SQL Server 2005和SQL Server 2000中使用GETDATE函數(shù)來查詢當前的日期和時間。此外,在SQL Server 2005中,還有另外幾個類似的日期時間函數(shù),分別為:CURRENT_TIMESTAMP、DATEADD、DATEDIFF、DATENAME、DATEPART、GETUTCDATE、DAY、 MONTH和YEAR。而在SQL Server 2008中,除了上述這些函數(shù)外,又新增了五個函數(shù),分別為SYSDATETIME、SYSDATETIMEOFFSET、SYSUTCDATETIME、SWITCHOFFSET和TODATETIMEOFFSET。其中SYSDATETIME函數(shù)返回目前系統(tǒng)的時間戳,不帶時區(qū)提示,能夠精確到毫秒級。SYSDATETIMEOFFSET函數(shù)和SYSDATETIME函數(shù)功能類似,不過包含了時區(qū)值。SYSUTCDATETIME返回以世界標準時間(又稱協(xié)調(diào)世界時,也就是格林威治時間)表示的日期和時間,也精確到毫秒級,是根據(jù)當前SQL Server運行所在地服務器所設置的本地時間和時區(qū)得來的。SYSDATETIME和SYSUTCDATETIME兩個函數(shù)返回的都是DATETIME2數(shù)據(jù)類型,而SYSDATETIMEOFFSET函數(shù)返回DATETIMEOFFSET數(shù)據(jù)類型。

  SWITCHOFFSET函數(shù)

  SWITCHOFFSET函數(shù)返回DATETIMEOFFSET數(shù)據(jù)類型的值,不再根據(jù)存儲的時區(qū)偏移值取值,而是根據(jù)設定的新時區(qū)偏倚值來取值。看看下面這個語句:

  SELECT SYSDATETIMEOFFSET(), SWITCHOFFSET (SYSDATETIMEOFFSET(), '-14:00')

  該腳本返回兩個列,第一列是根據(jù)世界標準時間得到的當前日期和時間值,第二列則是根據(jù)給定的時區(qū)偏移值返回的日期時間值。

  TODATETIMEOFFSET函數(shù)

  TODATETIMEOFFSET函數(shù)可以把本地日期或時間值以及特定的時區(qū)偏移值轉(zhuǎn)變?yōu)橐粋€datetimeoffset值。運行以下腳本,你會看到返回的結(jié)果中除了當前日期和時間外,還增加了時區(qū)值。


  SELECT TODATETIMEOFFSET (GETDATE(),'+11:00')

  轉(zhuǎn)換函數(shù)

  CONVERT函數(shù)可以從DATETIME數(shù)據(jù)類型的組成中抽取時間值或者日期值。運行以下腳本,返回結(jié)果的第一列為當前日期,第二列為當前時間。

  SELECT CONVERT(date, GETDATE()),CONVERT(time, GETDATE())

  使用新DATETIME數(shù)據(jù)類型進行轉(zhuǎn)換的注意事項

  如果你要增加DATE和TIME列,不能夠像SMALLDATETIME數(shù)據(jù)類型一樣加載,否則會返回以下的錯誤信息:Operand data type date is invalid for add operator。

  你可以嘗試把這兩列設置為浮點型數(shù)據(jù),一起存入,并把結(jié)果轉(zhuǎn)換成SMALLDATETIME或DATETIME列。(記住,當SMALLDATETIME數(shù)據(jù)存儲成浮點型時,日期值為整數(shù)部分而時間值為小數(shù)部分)不過,這也會返回一個錯誤信息:Explicit conversion from data type date to float is not allowed。

  正確的做法是把兩列都轉(zhuǎn)換為SMALLDATETIME數(shù)據(jù),并一起存入。例如使用以下腳本,你就可以得到輸出結(jié)果:

  Declare@dtasDATE
  Set@dt=getdate()
  Declare@dttasTIME
  Set@dtt=getdate()
  Selectcast(@dtassmalldatetime)+cast(@dttassmalldatetime

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SQL Server中datetimeset轉(zhuǎn)換datetime類型問題淺析
關(guān)于SQL Server的日期時間數(shù)據(jù)類型
sql語句中日期時間格式化查詢
SQL Server數(shù)據(jù)庫數(shù)據(jù)類型詳解
SQL Server datetime數(shù)據(jù)類型設計與優(yōu)化誤區(qū)淺析 - 數(shù)據(jù)庫應用 - 編程...
sql server2000中使用convert來取得datetime數(shù)據(jù)類型樣式_SQL...
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服