Funções de data e hora
O SQL Server possui um conjunto de funções embutidas que permitem manipular e extrair informações de datas e horas. Alguns exemplos incluem a função GETDATE() para obter a data e hora atual do servidor, a função DATEADD() para adicionar ou subtrair intervalos de tempo e a função CONVERT() para formatar datas e horas.
Função GETDATE():
A função GETDATE() é usada para obter a data e hora atuais do servidor SQL. Ela retorna um valor do tipo datetime. Veja um exemplo:
SELECT GETDATE() AS DataAtual;
Isso retornará a data e hora atuais do servidor.
Função DATEADD():
A função DATEADD() permite adicionar ou subtrair um intervalo de tempo específico a uma data ou hora. Ela recebe três parâmetros: a parte da data ou hora a ser adicionada ou subtraída, o valor numérico do intervalo e a data ou hora a ser manipulada. Aqui está um exemplo:
SELECT DATEADD(DAY, 7, GETDATE()) AS NovaData;
Nesse exemplo, estamos adicionando 7 dias à data atual. O resultado será a data atual + 7 dias.
Função CONVERT():
A função CONVERT() é usada para formatar datas e horas de diferentes maneiras. Ela permite converter um tipo de dado para outro tipo de dado. Veja um exemplo:
SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS DataFormatada;
Nesse exemplo, estamos convertendo a data atual em uma string formatada no formato dd/mm/aaaa. O resultado será algo como “05/06/2023”.
Função DATEDIFF():
A função DATEDIFF() calcula a diferença entre duas datas ou horas. Ela recebe três parâmetros: a parte da data ou hora na qual a diferença será calculada, a primeira data ou hora e a segunda data ou hora. Veja um exemplo:
DECLARE @DataInicio DATETIME = '2023-01-01';
DECLARE @DataFim DATETIME = '2023-06-01';
SELECT DATEDIFF(DAY, @DataInicio, @DataFim) AS DiasPassados;
Nesse exemplo, estamos calculando o número de dias entre duas datas. O resultado será o número de dias entre 01/01/2023 e 01/06/2023.
Função SWITCHOFFSET():
A função SWITCHOFFSET() permite alterar o fuso horário de uma data e hora. Ela recebe dois parâmetros: a data ou hora a ser ajustada e o deslocamento do fuso horário desejado. Veja um exemplo:
DECLARE @DataHoraOriginal DATETIMEOFFSET = '2023-06-01 12:00:00 +00:00';
SELECT SWITCHOFFSET(@DataHoraOriginal, '-04:00') AS DataHoraAlterada;
Nesse exemplo, estamos ajustando a data e hora original para o fuso horário “-04:00”. O resultado será a mesma data e hora, mas com o fuso horário alterado.
Conversão de formatos de data
A conversão de formatos de data e hora no SQL Server é realizada usando a função CONVERT(). Essa função permite converter valores de data e hora de um tipo de dado para outro tipo de dado, incluindo a formatação da representação textual da data. Isso é útil quando você precisa exibir uma data ou hora em um formato específico ou quando precisa comparar datas em formatos diferentes.
A sintaxe básica da função CONVERT() para a conversão de formatos de data é a seguinte:
CONVERT(tipo_de_dado_alvo, expressao, style)
O parâmetro tipo_de_dado_alvo
define o tipo de dado de destino para a conversão. No caso da conversão de formatos de data, usamos o tipo de dado VARCHAR
para representar a data como uma string.
O parâmetro expressao
representa o valor de data ou hora que será convertido.
O parâmetro style
especifica o estilo de formatação do valor de data ou hora convertido. Cada estilo corresponde a um formato específico.
Aqui está um exemplo que demonstra a conversão da data atual para o formato “dd/mm/aaaa”:
SELECT CONVERT(VARCHAR, GETDATE(), 103) AS DataFormatada;
Nesse exemplo, GETDATE()
retorna a data e hora atuais do servidor, e a função CONVERT()
é usada para converter essa data para uma string no formato “dd/mm/aaaa”. O resultado será algo como “05/06/2023”.
Aqui estão alguns estilos comumente usados para a conversão de formatos de data:
- 101: mm/dd/aaaa
- 102: aaaa.mm.dd
- 103: dd/mm/aaaa
- 104: dd.mm.aaaa
- 105: dd-mm-aaaa
Você pode consultar a documentação oficial do SQL Server para obter uma lista completa dos estilos de formatação suportados.
Lembre-se de que, ao realizar comparações de datas, é recomendado usar o tipo de dado DATE
ou DATETIME
em vez de convertê-las para strings. A conversão de datas em strings pode levar a resultados inesperados em comparações e operações de ordenação.
Essa é a forma de converter formatos de data e hora usando a função CONVERT() no SQL Server. Certifique-se de ajustar os parâmetros de acordo com o formato desejado.
Intervalos de tempo no SQL
O SQL Server oferece várias funções para trabalhar com intervalos de tempo: DATEADD(), DATEDIFF() e DATEPART(). Essas funções permitem adicionar ou subtrair intervalos específicos a uma data, calcular a diferença entre duas datas em termos de unidades de tempo (dias, horas, minutos etc.) e extrair componentes individuais de uma data.
Função DATEADD():
A função DATEADD() permite adicionar ou subtrair um intervalo específico de tempo a uma data. Ela recebe três parâmetros: a parte da data ou hora que será modificada, o valor numérico do intervalo e a data a ser modificada. Aqui está um exemplo que adiciona 3 dias a uma data:
SELECT DATEADD(DAY, 3, '2023-06-01') AS NovaData;
Nesse exemplo, estamos adicionando 3 dias à data ‘2023-06-01’. O resultado será ‘2023-06-04’.
Função DATEDIFF():
A função DATEDIFF() é usada para calcular a diferença entre duas datas em termos de unidades de tempo. Ela recebe três parâmetros: a parte da data ou hora na qual a diferença será calculada, a primeira data e a segunda data. Veja um exemplo que calcula a diferença em dias entre duas datas:
SELECT DATEDIFF(DAY, '2023-06-01', '2023-06-05') AS DiasDeDiferenca;
Nesse exemplo, estamos calculando a diferença em dias entre ‘2023-06-01’ e ‘2023-06-05’. O resultado será 4.
Função DATEPART():
A função DATEPART() permite extrair componentes individuais de uma data, como o dia, mês, ano, hora, minuto etc. Ela recebe dois parâmetros: a parte da data ou hora a ser extraída e a data da qual o componente será extraído. Aqui está um exemplo que extrai o dia de uma data:
SELECT DATEPART(DAY, '2023-06-05') AS Dia;
Nesse exemplo, estamos extraindo o dia da data ‘2023-06-05’. O resultado será 5.
Essas funções são úteis para realizar cálculos e manipulações envolvendo intervalos de tempo no SQL Server. Você pode ajustar os parâmetros de acordo com o intervalo de tempo desejado e as unidades de tempo (dia, hora, minuto, segundo etc.) com as quais você deseja trabalhar.
Lembre-se de que o SQL Server também suporta intervalos de tempo mais avançados, como a manipulação de intervalos de tempo com precisão fracionada usando o tipo de dado datetime2 ou datetimeoffset, e a realização de cálculos de intervalos entre datas e horas com fusos horários.