top of page

Funções de Data e Hora

Neste post, vamos conhecer várias funções que tratam de data e hora no SQL Server.

Todas as funções descritas neste post estão disponíveis a partir do SQL Server 2008 até a versão 2016, conforme a documentação da Microsoft. Algumas funções, como Getdate(), Month() e Year() já estavam disponíveis na versão 2000, mas para efeitos de registro, prefiro manter a informação de acordo com o site da Microsoft.

As funções EOMONTH() e DATEFROMPARTS() foram liberadas na versão 2012.

Datatypes

O SQL Server possui vários datatypes para data e hora:

GETDATE() e similares

Estas funções retornam a data e a hora do computador no qual a instância do SQL Server é executada:

Vamos ver essas funções em ação:

Observe que a hora retornada pelas funções GetDate(), SysDatetime() e Current_TimeStamp é diferente do retorno de GetUTCDate(), SysUTCDateTime e SysDateTimeOffset. Por quê? O resultado destas três funções é retornado como hora UTC (Tempo Universal Coordenado).

CAST e CONVERT

Estas funções são utilizadas para converter um valor entre certos tipos de dados.

  • CAST (valor AS tipo de dados)

  • CONVERT (tipo de dados, valor [numero_de_estilo])

As duas funções convertem o valor de saída no tipo de dados especificado. Na função CONVERT, em alguns casos, teremos um terceiro argumento aonde você pode especificar o estilo da conversão, com relação ao número do estilo, este indica que quando for necessária a conversão de data e hora para uma sequencia de caracteres ou vice-versa, deve ser obedecido certo estilo. Por exemplo, o estilo 103 indica “MM/DD/AAAA” e o numero do estilo 101 indica “MMDDAAAA”.

Neste script, temos todos os estilos de CONVERT:

DATEPART

Esta função retorna um numero que representa a parte solicitada de um determinado valor de data e de hora.

  • DATEPART (parte, data)

Os valores aceitáveis para o parâmetro parte são:

SWITCHOFFSET e TODATETIMEOFFSET

Esta função ajusta a data/hora passada de acordo com o fuso horário informado. Já TODATETIMEOFFSET mantém a data/hora e acrescenta o fuso horário informado.

  • SWITCHOFFSET (data e hora, fuso horário)

  • TODATETIMEOFFSET (data e hora, fuso horário)

DATEADD

Esta função permite adicionar um número específico de unidades de uma parte relativa a data especificada em um valor de data e hora de entrada.

  • DATEADD (parte, n, data)

Os valores aceitáveis para o parâmetro parte são:

DATEDIFF

Esta função retorna a diferença numérica entre duas datas, considerando uma determinada parte da data.

  • DATEDIFF (parte, data 1, data 2)

Normalmente, definimos que a Data 1 será menor que a Data 2, para retornarmos um valor positivo. Se Data 1 for maior que Data 2, o resultado da função será negativo.

Os valores aceitáveis para o parâmetro parte são:

YEAR, MONTH e DAY

Estas funções são abreviações da função DATEPART e retornam a representação de inteiro das partes relativas a ano, mês e dia de um valor de data e de hora de entrada.

  • YEAR (data)

  • MONTH (data)

  • DAY (data)

DATENAME

Esta função retorna uma sequência de caracteres que representa a parte de um determinado valor de data e de hora.

  • DATENAME (parte, valor_data)

Os valores aceitáveis para o parâmetro parte são:

Só um detalhe, a função retornará o nome no idioma do servidor. Por isso o resultado acima está em inglês. Para ter o resultado em português, podemos utilizar o comando:

  • SET LANGUAGE 'Brazilian'

Obs. 1: No SQL Server, o idioma Brasileiro existe e funciona melhor que o português!

Obs. 2: A troca do idioma utilizando SET LANGUAGE é válida apenas durante a sessão.

Para ver uma lista dos idiomas disponíveis, utilize a view:

  • SELECT * FROM syslanguages

ISDATE

Esta função aceita uma sequencia de caracteres como entrada e retorna 1 caso ela seja conversível em tipo de dados de data e de hora e, caso contrario, retorna 0.

  • ISDATE (valor)

EOMONTH()

Disponível a partir do SQL Server 2012, a função EOMONTH retorna o último dia do mês que contém a data especificada com um deslocamento opcional.

  • EOMONTH (data [, qtd meses a acrescentar] )

DATEFROMPARTS()

Disponível a partir do SQL Server 2012, a função DATEFROMPARTS() foi implementada a partir da versão 2012 do SQL Server, ela constrói uma data e retorna um DATE baseado no ano, mês e dia passados como parâmetro.

  • DATEFROMPARTS(ano, mês, dia)

Calculando datas

Estes exemplos combinam as funções de datas para calcular algumas informações:

Quero agradecer aos amigos dos grupos de DBA do Whatsapp que me passaram algumas sugestões de melhorias neste artigo, como o registro da versão onde a função está disponível e alguns exemplos mais interessantes.

 
Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags
bottom of page