datetimeoffset (Transact-SQL)
Define a data combinada com uma hora de um dia que possui reconhecimento de fuso horário e é baseada em um relógio de 24 horas.
Para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, consulte Funções Date e Time (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.
Descrição datetimeoffset
Propriedade |
Valor |
---|---|
Sintaxe |
datetimeoffset [ (fractional seconds precision) ] |
Uso |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
Formatos de literal de cadeia de caracteres padrão (usados para cliente de nível inferior) |
AAAA-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] Para obter mais informações, consulte a seção "Compatibilidade com versões anteriores para clientes de nível inferior", em Usando dados de data e hora. |
Intervalo de datas |
01-01-0001 a 31-12-9999 1º de janeiro, 1 d.C. a 31 de dezembro, 9999 d.C. |
Intervalo de horas |
00:00:00 a 23:59:59.9999999 |
Intervalo de deslocamento de fuso horário |
|
Intervalos de elementos |
AAAA são quatro dígitos, variando de 0001 a 9999, que representam um ano. MM são dois dígitos, variando de 01 a 12, que representam um mês do ano especificado. DD são dois dígitos, variando de 01 a 31, dependendo do mês, que representam um dia do mês especificado. hh são dois dígitos, variando de 00 a 23, que representam a hora. mm são dois dígitos, variando de 00 a 59, que representam o minuto. ss são dois dígitos, variando de 00 a 59, que representam o segundo. n* é de zero a sete dígitos, variando de 0 a 9999999, que representa as frações de segundo. hh são dois dígitos que abrangem de -14 a +14. mm são dois dígitos que abrangem de 00 a 59. |
Comprimento de caracteres |
26 posições no mínimo (AAAA-MM-DD hh:mm:ss {+|-}hh:mm) a 34 no máximo (AAAA-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm) |
Precisão, escala |
Escala especificadaResultado (precisão, escala)Comprimento de coluna (bytes)Precisão de segundos fracionários
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
|
Tamanho de armazenamento |
10 bytes, fixos, é o padrão com o padrão de precisão de segundos fracionários de 100ns. |
Exatidão |
100 nanossegundos |
Valor padrão |
1900-01-01 00:00:00 00:00 |
Calendário |
Gregoriano |
Precisão de frações de segundo definida pelo usuário |
Sim |
Preservação e reconhecimento de deslocamento de fuso horário |
Sim |
Reconhecimento de horário de verão |
Não |
Suporte para formatos de literal de cadeia de caracteres para datetimeoffset
A tabela a seguir lista os formatos de literal de cadeia de caracteres ISO 8601 que há suporte para datetimeoffset. Para obter informações sobre os formatos alfabéticos, numéricos, não separados e de hora para as partes de data e hora do datetimeoffset, consulte data (Transact-SQL) e hora (Transact-SQL).
ISO 8601 |
Descrição |
---|---|
AAAA-MM-DDThh:mm:ss[.nnnnnnn] [{+|-}hh:mm] |
Esses dois formatos não são afetados pelas configurações de localidade de sessão SET LANGUAGE e SET DATEFORMAT. Não são permitidos espaços entre as partes datetimeoffset e datetime. |
AAAA-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC) |
Esse formato, pela definição ISO, indica que a parte de datetime deve ser expressa em UTC (tempo universal coordenado). Por exemplo, 1999-12-12 12:30:30.12345 -07:00 deve ser representado como 1999-12-12 19:30:30.12345Z. |
Deslocamento de fuso horário
Um deslocamento de fuso horário especifica o local da zona UTC para um valor de time ou datetime. O deslocamento de fuso horário pode ser representado como [+|-] hh:mm:
hh são dois dígitos, que abrangem de 00 a 14, que representam o número de horas no deslocamento de fuso horário.
mm são dois dígitos, variando de 00 a 59, que representam o número de minutos adicionais no deslocamento de fuso horário.
+ (mais) ou - (menos) são sinais obrigatórios em um deslocamento de fuso horário. Indicam se o deslocamento de fuso horário é adicionado ou subtraído da hora UTC para se obter a hora local. O intervalo válido do deslocamento de fuso horário varia de -14: 00 a +14: 00.
O intervalo de deslocamento de fuso horário segue o padrão W3C XML para definição de esquema XSD e é ligeiramente diferente da definição padrão do SQL 2003, 12:59 a +14:00.
O parâmetro de tipo opcional fractional seconds precision especifica o número de dígitos para a parte fracionária dos segundos. Esse valor pode ser um número inteiro com 0 a 7 (100 nanossegundos). O padrão fractional seconds precision é 100ns (sete dígitos para a parte fracionária dos segundos).
Os dados são armazenados no banco de dados e processados, comparados, classificados e indexados no servidor como em UTC. O deslocamento de fuso horário será preservado no banco de dados para recuperação.
Um determinado deslocamento de fuso horário será assumido como reconhecimento de DST (horário de verão) e ajustado para qualquer datetime fornecida que estiver no período de DST.
Para o tipo datetimeoffset, tanto o UTC quanto o valor datetime local (para o deslocamento de fuso horário persistente ou convertido) serão validados durante as operações insert, update, arithmetic, convert ou assign. A detecção de qualquer UTC inválido ou valor datetime local (para o deslocamento de fuso horário persistente ou convertido) causará um erro de valor inválido. Por exemplo, 9999-12-31 10:10:00 é válido no UTC, mas excede em hora local para o deslocamento de fuso horário em +13:50.
Conformidade com ANSI e ISO 8601
As seções de conformidade com ANSI e ISO 8601 de tópicos de data e hora se aplicam a datetimeoffset.
Exemplos
O exemplo a seguir compara os resultados da conversão de uma cadeia de caracteres para cada tipo de dados de date e 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';
Aqui está o conjunto de resultados.
Tipo de dados |
Saída |
---|---|
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 |
Consulte também