SqlHints.com

DateTime2 är den nya datatypen som introducerades i Sql Server 2008 för lagring av datum-och tidsvärde. Enligt MSDN föreslår Microsoft att använda den här nya datatypen för nytt arbete istället för DateTime.

Följande tabell sammanfattar några av de stora skillnaderna mellan denna nya DateTime2 och den gamla DateTime-datatypen.

DateTime DateTime2
Min Value 1753-01-01 00:00:00 0001-01-01 00:00:00
Max Value 9999-12-31 23:59:59.997 9999-12-31 23:59:59.9999999
lagringsstorlek 8 byte 6 till 8 byte
Obs: Parameter n är valfri och om den inte anges är fraktionerad
sekunder precision är 7 siffra och det kan vara från 0 till 7 siffra. For fractional seconds
precision <3, takes 6 bytes For fractional seconds precision 3 or 4 it will take
7 bytes For fractional seconds precision >4 it will take 8 bytes
Usage Declare @now datetime Declare @now datetime2(7)
Compliance Is not an ANSI/ISO compliant Is an ANSI/ISO compliant
aktuellt datum och tid funktion GetDate() – det returnerar DB aktuellt datum och tid för DateTime datatyp

exempel: välj GETDATE()
resultat: 2011-09-16 13:23:18.767

sysdatetime()– det returnerar db aktuellt datum och tid för datetime2 datatyp

exempel:välj sysdatetime()
resultat: 2011-09-16 13:23:18.7676720

+/- dagar fungerar

exempel:
deklarera @nowdatetime datetime = getdate() välj @nowdatetime + 1
resultat: 2011-09-17 13:44:31.247

misslyckas – behöver bara använda DateAdd-funktionen

exempel:
deklarera @nowDateTime2 DATETIME2=
SYSDATETIME()
välj @nowDateTime2+1
resultat: MSG 206, nivå 16, stat 2, linje 2
operand typ Clash: datetime2 är inkompatibel med int

DATETIME2 med fraktionerad sekunder precision av 3 är samma som datetime datatyp. Och DateTime2 (3) använder 7 byte lagring i stället för 8 byte som gamla DateTime datatyp använder och det ger också högre datumintervall (dvs. 0001-01-01 till 9999-12-31) jämfört med DateTime datatyp. Låt oss nu se detta med ett exempel:

DECLARE @nowDateTime DATETIME = GETDATE(), @nowDateTime2 DATETIME2(3)= SYSDATETIME()SELECT DATALENGTH(@nowDateTime) 'DateTime Storage Size', DATALENGTH(@nowDateTime2) 'DateTime2(3) Storage Size'
Result:DateTime Storage Size DateTime2 Storage Size --------------------- ---------------------- 8 7

Läs också

  • Varchar vs NVarchar
  • varchar vs Varchar(MAX)
  • Char vs Varchar
  • Text vs Varchar(Max)
  • Union vs Union alla
  • datetime vs datetime2
  • ange quoted_identifier på vs set quoted_identifier off
  • lagrad procedur vs användardefinierad funktion
  • primärnyckel vs unik nyckel
  • raiserror vs kasta
  • tillfällig tabell vs tabellvariabel
  • len() vs datalength()
  • sekvens vs identitet
  • datediff vs datediff_big
  • vänster gå med vs vänster Yttre anslutning
  • höger anslutning mot höger yttre anslutning
  • gå med mot inre anslutning
  • vänster yttre anslutning mot höger yttre anslutning
  • SMALLDATETIME vs DATETIME



Lämna ett svar

Din e-postadress kommer inte publiceras.