datetime2 (Transact-SQL)

Define una fecha que se combina con una hora de día basada en el reloj de 24 horas. datetime2 puede considerarse una extensión del tipo datetime existente que tiene un intervalo de fechas mayor, un valor predeterminado mayor de precisión fraccionaria y precisión especificada por el usuario opcional.

Para obtener una introducción de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL). Para obtener información y ejemplos comunes a los tipos de datos y funciones de fecha y hora, vea Usar datos de fecha y hora.

Descripción de datetime2

Propiedad

Valor

Sintaxis

datetime2 [ (fractional seconds precision) ]

Uso

DECLARE @MyDatetime2 datetime2(7)

CREATE TABLE Table1 ( Column1 datetime2(7) )

Formato de literal de cadena predeterminado

(se utiliza para el cliente de nivel inferior)

AAAA-MM-DD hh:mm:ss[.fracciones de segundos]

Para obtener más información, vea la sección sobre la compatibilidad con versiones anteriores de clientes de nivel inferior de Usar datos de fecha y hora.

Intervalo de fechas

De 0001-01-01 a 9999-12-31

Del 1 de enero del año 1 después de Cristo al 31 de diciembre de 9999

Intervalo de horas

De 00:00:00 a 23:59:59.9999999

Intervalo de desplazamiento de zona horaria

Ninguna

Intervalos de elementos

AAAA es una cifra de cuatro dígitos comprendida entre 0001 y 9999 que representa un año.

MM es una cifra de dos dígitos comprendida entre 01 y 12 que representa un mes del año especificado.

DD es una cifra de dos dígitos comprendida entre 01 y 31 dependiendo del mes, que representa un día del mes especificado.

hh es una cifra de dos dígitos comprendida entre 00 y 23 que representa la hora.

mm es una cifra de dos dígitos comprendida entre 00 y 59 que representa los minutos.

ss es una cifra de dos dígitos comprendida entre 00 y 59 que representa los segundos.

n* es una cifra de cero a siete dígitos comprendida entre 0 y 9999999 que representa las fracciones de segundos.

Longitud de los caracteres

19 posiciones como mínimo (AAAA-MM-DD hh:mm:ss) a 27 como máximo (AAAA-MM-DD hh:mm:ss .0000000)

Precisión, escala

De 0 a 7 dígitos, con una precisión de 100 ns. La precisión predeterminada es 7 dígitos.

Tamaño de almacenamiento

6 bytes para precisiones inferiores a 3; 7 bytes para precisiones 3 y 4. Todas las demás precisiones requieren 8 bytes.

Precisión

100 nanosegundos

Valor predeterminado

1900-01-01 00:00:00

Calendario

Gregoriano

Precisión de fracciones de segundo definida por el usuario

Conservación y reconocimiento del desplazamiento de la zona horaria

No

Reconocimiento del horario de verano

No

Para los metadatos de tipo de datos, vea sys.systypes (Transact-SQL) o TYPEPROPERTY (Transact-SQL). La precisión y escala son variables para algunos tipos de datos de hora y fecha. Para obtener la precisión y la escala para una columna, vea COLUMNPROPERTY (Transact-SQL), COL_LENGTH (Transact-SQL)o sys.columns (Transact-SQL).

Formatos de literales de cadena admitidos para datetime2

Las tablas siguientes enumeran los formatos de literales de cadena ISO 8601 y ODBC admitidos para datetime2. Para obtener información sobre los formatos alfabético, numérico, sin separación y de hora para las partes de fecha y hora de datetime2, vea date (Transact-SQL) y hora (Transact-SQL).

ISO 8601

Descripciones

AAAA-MM-DDThh:mm:ss[.nnnnnnn]

AAAA-MM-DDThh:mm:ss[.nnnnnnn]

Este formato no se ve afectado por la configuración regional de sesión de SET LANGUAGE y SET DATEFORMAT. La letra T, los dos puntos (:) y el punto (.) se incluyen en el literal de cadena, por ejemplo '2007-05-02T19:58:47.1234567'.

ODBC

Descripción

{ ts 'aaaa-mm-dd hh:mm:ss[.fracciones de segundo]' }

Específico de ODBC API:

  • El número de dígitos a la derecha del separador decimal, que representa las fracciones de segundo, se puede especificar de 0 a 7 (100 nanosegundos).

  • En SQL Server 2008, con el nivel de compatibilidad establecido en 10, el literal se asignará internamente al nuevo tipo time.

Compatibilidad con ANSI e ISO 8601

La compatibilidad ANSI e ISO 8601 de date y time se aplica a datetime2.

Ejemplos

El ejemplo siguiente compara los resultados de convertir una cadena a los tipos de datos date y time.

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Éste es el conjunto de resultados.

Tipo de datos

Salida

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15