datetimeoffset (Transact-SQL)
Define una fecha que se combina con una hora del día con reconocimiento de zona horaria y basado en un reloj de 24 horas.
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 datetimeoffset
Propiedad |
Valor |
---|---|
Sintaxis |
datetimeoffset [ (fractional seconds precision) ] |
Uso |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
Formatos de literal de cadena predeterminados (utilizados para el cliente de nivel inferior) |
AAAA-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] Para obtener más información, consulte 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 |
|
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. s 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. hh es una cifra de dos dígitos comprendida entre -14 y 14. mm es una cifra de dos dígitos comprendida entre 00 y 59. |
Longitud de los caracteres |
De 26 posiciones como mínimo (AAAA-MM-DD hh:mm:ss {+|-}hh:mm) a 34 como máximo (AAAA-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm) |
Precisión, escala |
Escala especificadaResultado (precisión, escala)Longitud de la columna (bytes).Precisión de fracciones de segundo
datetimeoffset (34,7)107
datetimeoffset(0) (26,0)80-2
datetimeoffset(1) (28,1)80-2
datetimeoffset(2) (29,2)80-2
datetimeoffset(3) (30,3)93-4
datetimeoffset(4) (31,4)93-4
datetimeoffset(5) (32,5)105-7
datetimeoffset(6) (33,6)105-7
datetimeoffset(7) (34,7)105-7
|
Tamaño de almacenamiento |
10 bytes, fijo es el valor predeterminado con el valor predeterminado de 100 ns de precisión de fracciones de segundo. |
Precisión |
100 nanosegundos |
Valor predeterminado |
1900-01-01 00:00:00 00:00 |
Calendario |
Gregoriano |
Precisión de fracciones de segundo definida por el usuario |
Sí |
Conservación y reconocimiento del desplazamiento de la zona horaria |
Sí |
Reconocimiento del horario de verano |
No |
Formatos de literales de cadena admitidos para datetimeoffset
La tabla siguiente enumeran los formatos de literales de cadena ISO 8601 admitidos para datetimeoffset. 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 datetimeoffset, vea date (Transact-SQL) y hora (Transact-SQL).
ISO 8601 |
Descripción |
---|---|
AAAA-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm] |
Estos dos formatos no se ven afectados por la configuración regional de sesión de SET LANGUAGE y SET DATEFORMAT. No se permiten espacios entre las partes datetimeoffset y datetime. |
AAAA-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC) |
Este formato por definición de ISO indica que la parte datetime se debería expresar en Hora universal coordinada (Hora UTC). Por ejemplo, 1999-12-12 12:30:30.12345 -07: 00 se deberían representar como 1999-12-12 19:30:30.12345 Z. |
Desplazamiento de zona horaria
El ajuste de zona horaria especifica el ajuste de zona de la Hora UTC para un valor time o datetime. El desplazamiento de zona horaria se puede representar como [+ | -] hh:mm:
hh es una cifra de dos dígitos comprendidos entre 00 a 14 y representa el número de horas en el desplazamiento de zona horaria.
mm es una cifra de dos dígitos comprendidos entre 00 a 59 y representa el número minutos adicionales en el desplazamiento de zona horaria.
+ (más) o – (menos) es el signo que se usa obligatoriamente para indicar un ajuste de zona horaria. Esto indica si el desplazamiento de zona horaria se agrega o resta de la hora UTC para obtener la hora local. El intervalo válido de desplazamiento de zona horaria es de -14: 00 a +14: 00.
El intervalo del desplazamiento de zona horaria sigue la norma de W3C XML para la definición del esquema XSD y es ligeramente diferente de la definición estándar de SQL 2003, de 12:59 a +14: 00.
El parámetro de tipo opcional fractional seconds precision especifica el número de dígitos para la parte fraccionaria de los segundos. Este valor puede ser un entero con 0 a 7 (100 nanosegundos). El valor fractional seconds precision predeterminado es 100 ns (siete dígitos para la parte fraccionaria de los segundos).
Los datos se almacenan en la base de datos y se procesan, comparan, ordena e indizan en el servidor como en UTC. El desplazamiento de zona horaria se conservará en la base de datos para la recuperación.
El desplazamiento de la zona horaria determinada se supondrá que reconoce el horario de verano (DST) y se ajustará para cualquier datetime determinado dentro del periodo DST.
Para el tipo datetimeoffset, tanto el valor UTC como el valor datetime (al desplazamiento de la zona horario persistente o convertido) se validarán durante las operaciones de inserción, actualización, aritmética, conversión o asignación. La detección de cualquier valor UTC o local datetime no válido (al desplazamiento de la zona horario persistente o convertido) generará un error de valor no válido. Por ejemplo, 9999-12-31 10:10:00 son válidos en UTC, pero se desbordan en la hora local al desplazamiento de zona horaria +13: 50.
Compatibilidad con ANSI e ISO 8601
Las secciones de compatibilidad ANSI e ISO 8601 de los temas date y time se aplican a datetimeoffset.
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'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS
'datetimeoffset IS08601';
É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 |
Vea también