datetime2 (Transact-SQL)

Define uma data que é combinada com uma hora de um dia de 24 horas. datetime2 pode ser considerada uma extensão do tipo datetime existente, que tem um intervalo maior de datas, uma precisão fracionária padrão mais ampla e precisão opcional especificada pelo usuário.

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 dos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.

Descrição de datetime2

Propriedade

Valor

Sintaxe

datetime2 [ (fractional seconds precision) ]

Uso

DECLARE @MyDatetime2 datetime2(7)

Tabela 1 CREATE TABLE ( Coluna 1 datetime2(7) )

Formato de literal de cadeia de caracteres padrão

(usado para cliente de nível inferior)

YYYY-MM-DD hh:mm:ss[segundos fracionários]

Para obter mais informações, consulte "Compatibilidade com versões anteriores para clientes de nível inferior" , em Usando dados de data e hora.

Intervalo de data

0001-01-01 a 9999-12-31

Janeiro 1,1 AD até dezembro 31, 9999 AD

Intervalo de tempo

00:00:00 até 23:59:59.9999999

Intervalo de deslocamento de fuso horário

Nenhum

Intervalos de elementos

AAAA é um número de quatro dígitos, variando de 0001 a 9.999, que representa um ano.

MM é um número de dois dígitos, variando de 01 a 12 e representa um mês no ano especificado.

DD é um número de dois dígitos, variando de 01 a 31, dependendo do mês e representa um dia do mês especificado.

hh é um número de dois dígitos, variando de 00 a 23, que representa a hora.

mm é um número de dois dígitos, variando de 00 a 59, que representa o minuto.

ss é um número de dois dígitos, variando de 00 a 59, que representa o segundo.

n* é um número de zero a sete dígitos, variando de 0 a 9999999, que representa as frações de segundo.

Comprimento de caracteres

19 posições no mínimo (YYYY-MM-DD hh:mm:ss ) a 27 no máximo (YYYY-MM-DD hh:mm:ss.0000000)

Precisão, escala

0 a 7 dígitos, com exatidão de 100ns. A precisão padrão é 7 dígitos.

Tamanho de armazenamento

6 bytes para precisões menores que 3; 7 bytes para precisões 3 e 4. Todas as outras precisões exigem 8 bytes.

Precisão

100 nanossegundos

Valor padrão

1900-01-01 00:00:00

Calendário

Gregoriano

Precisão de segundo fracionário definida pelo usuário

Sim

Preservação e reconhecimento de deslocamento de fuso horário

Não

Reconhecimento de horário de verão

Não

Para metadados de tipo de dados, consulte sys.systypes (Transact-SQL) ou TYPEPROPERTY (Transact-SQL). Precisão e escala são variáveis para alguns tipos de data e data/hora. Para obter precisão e escala para uma coluna, consulte COLUMNPROPERTY (Transact-SQL), COL_LENGTH (Transact-SQL), or sys.columns (Transact-SQL).

Formatos de literal de cadeia de caracteres com suporte para datetime2

As tabelas a seguir listam os formatos de literal de cadeia de caracteres ISO 8601 e ODBC para datetime2. Para obter informações sobre os formatos alfabético, numérico, não separado e de hora para as partes de data e hora de datetime2, consulte data (Transact-SQL) e hora (Transact-SQL).

ISO 8601

Descrições

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

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

Esse formato não é afetado pelas configurações de localidade da sessão SET LANGUAGE e SET DATEFORMAT. O T, os dois pontos (:) e o ponto final (.) são incluídos na literal de cadeia de caracteres, por exemplo '2007-05-02T19:58:47.1234567'.

ODBC

Descrição

{ ts 'yyyy-mm-dd hh:mm:ss[.segundos fracionários]' }

Específico de API ODBC:

  • O número de dígitos à esquerda do ponto decimal, que representa os segundos fracionários, pode ser especificado de 0 até 7 (100 nanossegundos).

  • No SQL Server 2008, com nível de compatibilidade definido como 10, o literal irá mapear internamente até o novo tipo de time.

Conformidade com ANSI e ISO 8601

A compatibilidade de ANSI e ISO 8601 de data e hora se aplicam a datetime2.

Exemplos

O exemplo a seguir compara os resultados da conversão de uma cadeia de caracteres com 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';

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