Tipos de dados e funções de data e hora (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics

As seções neste artigo abrangem todos os tipos de dados e funções de data e hora do Transact-SQL.

Tipos de dados de data e hora

Os tipos de dados de data e hora do Transact-SQL estão listados na seguinte tabela:

Tipo de dados Formatar Intervalo Precisão Tamanho de armazenamento (bytes) Precisão de segundo fracionário definida pelo usuário Deslocamento de fuso horário
time HH: mm: ss [.nnnnnnnn] 00:00:00.0000000 a 23:59:59.9999999 100 nanossegundos 3 a 5 Sim Não
date yyyy-MM-dd 0001-01-01 a 9999-12-31 1 dia 3 Não Não
smalldatetime aaaa-MM-dd HH:mm:ss 01.01.00 a 06.06.79 1 minuto 4 Não Não
datetime aaaa-MM-dd HH:mm:ss[.nnn] 1753-01-01 a 9999-12-31 0,00333 segundo 8 Não Não
datetime2 aaaa-MM-dd HH:mm:ss[.nnnnnnn] 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 100 nanossegundos 6 a 8 Sim Não
datetimeoffset aaaa-MM-dd HH:mm:ss[.nnnnnnn] [+|-]HH:mm 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 (em UTC) 100 nanossegundos 8 a 10 Sim Sim

Observação

O tipo de dados rowversion Transact-SQL não é um tipo de dados de data ou hora. timestamp é um sinônimo preterido de rowversion.

Funções de data e hora

As tabelas a seguir listam as funções de data e hora do Transact-SQL. Para obter mais informações sobre determinismo de funções, veja Funções determinísticas e não determinísticas.

Funções que retornam valores de data e hora do sistema

O Transact-SQL deriva todos os valores de data e hora do sistema operacional do computador no qual a instância do SQL Server é executada.

Funções de data e hora do sistema de precisão superior

Desde o SQL Server 2008 (10.0.x), o Mecanismo de Banco de Dados deriva os valores de data e hora usando a API do Windows GetSystemTimeAsFileTime(). A precisão depende do hardware do computador e da versão do Windows no qual a instância do SQL Server está sendo executada. A API tem uma precisão fixada em 100 nanossegundos. Use a API do Windows GetSystemTimeAdjustment() para determinar a precisão.

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
SYSDATETIME SYSDATETIME ( ) Retorna um valor datetime2(7) que contém a data e hora do computador no qual a instância de SQL Server é executada. O valor retornado não inclui a compensação de fuso horário. Datetime2 (7) Não determinístico
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) Retorna um valor datetimeoffset(7) que contém a data e hora do computador no qual a instância de SQL Server é executada. O valor retornado inclui o deslocamento de fuso horário. datetimeoffset(7) Não determinístico
SYSUTCDATETIME SYSUTCDATETIME ( ) Retorna um valor datetime2(7) que contém a data e hora do computador no qual a instância de SQL Server está sendo executada. A função retorna os valores de data e hora como hora UTC (Tempo Universal Coordenado). Datetime2 (7) Não determinístico

Funções de data e hora do sistema de precisão inferior

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Retorna um valor datetime que contém a data e hora do computador no qual a instância de SQL Server é executada. O valor retornado não inclui a compensação de fuso horário. datetime Não determinístico
GETDATE GETDATE ( ) Retorna um valor datetime que contém a data e hora do computador no qual a instância de SQL Server é executada. O valor retornado não inclui a compensação de fuso horário. datetime Não determinístico
GETUTCDATE GETUTCDATE ( ) Retorna um valor datetime que contém a data e hora do computador no qual a instância de SQL Server é executada. A função retorna os valores de data e hora como hora UTC (Tempo Universal Coordenado). datetime Não determinístico
CURRENT_DATE CURRENT_DATE Retorna um valor de data que contém apenas a data do computador no qual a instância do Mecanismo de Banco de Dados é executada. O valor retornado não inclui a hora e o deslocamento de fuso horário. date Não determinístico

Funções que retornam partes de data e hora

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
DATE_BUCKET 0DATE_BUCKET ( datepart, number, date, origin ) Retorna um valor correspondente ao início de cada bucket de data e hora do carimbo de data/hora definido pelo parâmetro origin ou o valor de origem padrão de 1900-01-01 00:00:00.000 se o parâmetro de origem não for especificado. O tipo de retorno depende do argumento fornecido para date. Não determinístico
DATENAME DATENAME ( datepart, date ) Retorna uma cadeia de caracteres que representa o datepart especificado da data especificada. nvarchar Não determinístico
DATEPART DATEPART ( datepart, date ) Retorna um inteiro que representa o datepart especificado da data especificada. int Não determinístico
DATETRUNC DATETRUNC ( datepart, date ) Retorna uma data de entrada truncada para um datepart especificado. O tipo de retorno depende do argumento fornecido para date. Não determinístico
DAY DAY ( date ) Retorna um inteiro que representa a parte do dia da data especificada. int Determinística
MONTH MONTH ( date ) Retorna um inteiro que representa a parte do mês de uma data especificada. int Determinística
YEAR YEAR ( date ) Retorna um inteiro que representa a parte do ano de uma data especificada. int Determinística

Funções que retornam valores de data e hora de suas partes

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
DATEFROMPARTS DATEFROMPARTS ( year, month, day ) Retorna um valor de date para o ano, o mês e o dia especificados. date Determinística
DATETIME2FROMPARTS DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision) Retorna um valor de datetime2 para a data e hora especificadas, com a precisão especificada. datetime2(precision) Determinística
DATETIMEFROMPARTS DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds) Retorna um valor de datetime para a data e a hora especificadas. datetime Determinística
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision) Retorna um valor de datetimeoffset para a data e hora especificadas e com deslocamentos e precisão especificados. datetimeoffset(precision) Determinística
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute ) Retorna um valor de smalldatetime para a data e a hora especificadas. smalldatetime Determinística
TIMEFROMPARTS TIMEFROMPARTS ( hour, minute, seconds, fractions, precision ) Retorna um valor time para a hora especificada, com a precisão especificada. time(precision) Determinística

Funções que retornam valores de diferença de data e hora

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
DATEDIFF DATEDIFF ( datepart, startdate, enddate ) Retorna o número de limites de datepart de data ou hora cruzados entre duas datas especificadas. int Determinística
DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) Retorna o número de limites de datepart de data ou hora cruzados entre duas datas especificadas. bigint Determinística

Funções que modificam valores de data e hora

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
DATEADD DATEADD (datepart, number, date ) Retorna um novo valor de datetime adicionando um intervalo à datepart especificada da date especificada. O tipo de dados do argumento date Determinística
EOMONTH EOMONTH ( start_date [ , month_to_add ] ) Retorna o último dia do mês que contém a data especificada com um deslocamento opcional. O tipo de retorno é o tipo do argumento start_date ou, como alternativa, o tipo de dados date. Determinística
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) SWITCHOFFSET altera o deslocamento de fuso horário de um valor DATETIMEOFFSET e preserva o valor UTC. datetimeoffset com a precisão fracionária de DATETIMEOFFSET Determinística
TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET transforma um valor datetime2 em um valor datetimeoffset. TODATETIMEOFFSET interpreta o valor datetime2 no horário local, para o time_zone especificado. datetimeoffset com a precisão fracionária do argumento datetime Determinística

Funções que definem ou retornam funções de formato da sessão

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
@@DATEFIRST @@DATEFIRST Retorna o valor atual, da sessão, de SET DATEFIRST. tinyint Não determinístico
SET DATEFIRST SET DATEFIRST { número | @number_var } Define o primeiro dia da semana como um número de 1 a 7. Não aplicável Não aplicável
SET DATEFORMAT SET DATEFORMAT { formato | @format_var } Define a ordem das partes de data (dia/mês/ano) para inserção de dados datetime ou smalldatetime. Não aplicável Não aplicável
@@LANGUAGE @@LANGUAGE Retorna o nome do idioma usado no momento. @@LANGUAGE não é uma função de data ou hora. No entanto, a definição de idioma pode afetar a saída das funções de data. Não aplicável Não aplicável
SET LANGUAGE SET IDIOMA { [ N ] 'idioma' | @language_var } Define o ambiente de idioma para as mensagens do sistema e da sessão. SET LANGUAGE não é uma função de data ou hora. No entanto, a definição de idioma afeta a saída das funções de data. Não aplicável Não aplicável
sp_helplanguage sp_helplanguage [ [ @language = ] 'linguagem' ] Retorna informações sobre formatos de data de todos os idiomas com suporte. sp_helplanguage não é um procedimento armazenado de data ou hora. No entanto, a definição de idioma afeta a saída das funções de data. Não aplicável Não aplicável

Funções que validam valores de data e hora

Função Sintaxe Retornar valor Tipo de dados de retorno Determinismo
ISDATE ISDATE ( expression ) Determina se uma expressão de entrada datetime ou smalldatetime tem um valor de data ou hora válido. int ISDATE só será determinística se usada com a função CONVERT, quando o parâmetro de estilo CONVERT for especificado e o estilo não for igual a 0, 100, 9 nem 109.
Artigo Descrição
FORMAT Retorna um valor formatado com o formato e a cultura opcional especificados. Use a função FORMAT para formatação com reconhecimento de localidade de valores de data/hora e número como cadeias de caracteres.
CAST e CONVERT Fornece informações sobre a conversão de valores de data e hora para e de literais de cadeia de caracteres, bem como outros formatos de data e hora.
Gravar instruções Transact-SQL internacionais Fornece diretrizes para a portabilidade de bancos de dados e aplicativos de bancos de dados que usam instruções Transact-SQL de uma linguagem a outra ou que dão suporte a várias linguagens.
Funções escalares ODBC Fornece informações sobre as funções escalares ODBC disponíveis para uso em instruções Transact-SQL. Inclui funções de data e hora ODBC.
AT TIME ZONE Fornece conversão de fuso horário.