top of page

Funções de data e hora no SQL Server

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

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 número 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

A função SWITHOFFSET 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:

Segue exemplo de cálculo de horas, onde precisamos exibir o número de horas, minutos e segundos de diferença entre as duas datas.

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

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

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:

Dica bônus

Embora não seja uma função de data e hora, eu uso CHOOSE sempre que preciso do nome do mês, sem a necessidade de mudar a linguagem do SQL Server.

E se você precisar converter uma data AAAA/MM/DD para MM/AAAA, um truque muito util é usar RIGHT para garantir o zero à esquerda do mês.

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