SqlHints.com

DateTime2 es el nuevo Tipo de datos introducido en Sql Server 2008 para almacenar el valor de Fecha y Hora. Según MSDN, Microsoft sugiere usar este nuevo tipo de datos para trabajos nuevos en lugar de DateTime.

La siguiente tabla resume algunas de las principales diferencias entre este nuevo tipo de datos DateTime2 y el antiguo Tipo de datos DateTime.

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
Tamaño de almacenamiento 8 Bytes 6 a 8 bytes
Nota: El parámetro n es opcional y, si no se especifica, fraccionado
la precisión de los segundos es de 7 dígitos y puede ser de 0 a 7 dígitos. 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
Función de Fecha y hora actual GetDate() – Devuelve la Fecha y Hora actual de la base de datos del tipo de datos DateTime

Ejemplo: SELECCIONE GETDATE()
Resultado: 2011-09-16 13:23:18.767

SYSDATETIME()– Devuelve la Fecha y Hora actuales de DB del tipo de datos DateTime2

Ejemplo:SELECT SYSDATETIME()
Resultado: 2011-09-16 13:23:18.7676720

+/- días WORKS

Ejemplo:
DECLARE @nowDateTime DATETIME = GETDATE() SELECCIONE @nowDateTime + 1
Resultado: 2011-09-17 13:44:31.247

FALLA – Necesita usar solo la función DateAdd

Ejemplo:
DECLARE @nowDateTime2 DATETIME2=
SYSDATETIME()
SELECCIONE @nowDateTime2+1
Resultado: Msg 206, Nivel 16, Estado 2, Línea 2
Choque de tipo de operando: datetime2 es incompatible con int

DateTime2 con una precisión de segundos fraccionados de 3 es lo mismo que el tipo de datos DateTime. Y DateTime2 (3) utiliza 7 bytes de almacenamiento en lugar de 8 bytes que usa el tipo de datos DateTime antiguo y también proporciona un rango de fechas más alto (p. ej. 0001-01-01 a 9999-12-31) en comparación con el tipo de datos DateTime. Ahora veamos esto con un ejemplo:

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

LEA TAMBIÉN

  • Varchar vs NVarchar
  • Varchar vs Varchar(MAX)
  • Char vs Varchar
  • Texto vs Varchar(Max)
  • Unión vs Union All
  • DateTime vs DateTime2
  • SET QUOTED_IDENTIFIER ON vs SET QUOTED_IDENTIFIER APAGADO
  • Procedimiento Almacenado vs Función Definida por el Usuario
  • Clave Primaria vs Clave Única
  • RAISERROR vs TIRO
  • Tabla Temporal vs Variable de Tabla
  • Len() vs Datalength()
  • Secuencia vs Identidad
  • DATEDIFF vs DATEDIFF_BIG
  • LEFT JOIN vs IZQUIERDA OUTER JOIN
  • RIGHT JOIN vs RIGHT OUTER JOIN
  • UNIRSE vs INNER JOIN
  • LEFT OUTER JOIN vs RIGHT OUTER JOIN
  • SMALLDATETIME vs DATETIME



Deja una respuesta

Tu dirección de correo electrónico no será publicada.