Como calcular a diferença entre duas datas com SQL Server em horas minutos ou segundos no SQL Server? A função DATEDIFF() do SQL Server permite-nos calcular a diferença entre dois carimbos temporais, mas apenas numa unidade.
Por exemplo, apenas em segundos, ou apenas em minutos ou apenas em horas. Assim, calcular a diferença entre uma data de início e uma data de fim não é simples com o SQL Server. Este post mostra-lhe como fazê-lo com uma simples consulta de exemplo, explicada passo a passo.
Consultas T-SQL para calcular a diferença entre datas
Como exemplo, esta simples consulta SQL está a utilizar DATEDIFF() com dois timestamps com exactamente uma hora de diferença. E cada consulta dá apenas uma unidade. Assim, basicamente, temos de combinar ou concatenar várias consultas para obter as horas, minutos e segundos dentro de uma única consulta SQL. Abaixo de cada consulta é devolvida uma unidade.
1. Calcular a diferença de tempo em horas minutos e segundos
As consultas abaixo mostram 3 tipos diferentes de resultados. No entanto, cada unidade de tempo não é um tempo, mas apenas uma única unidade. Portanto, é obrigatório concatená-los e convertê-los.
- Primeiro, calcular a diferença em segundos
- Depois minutos
- Duram as horas
-- Declare e inicialize duas variáveis com exactamente uma hora de diferença: 9 - 8 = 1h DECLARE @DateStart DATETIME DECLARE @DateEnd DATETIME SET @DateStart = '2017-03-10 08:00:00' SET @DateEnd = '2017-03-10 09:00:00' -- SQL Query retorna a diferença em segundos : 3600 segundos SELECT DATEDIFF(SECOND, @DateStart, @DateEnd) AS [Difference in Seconds] -- SQL Query retorna a diferença em minutos : 60 minutos SELECT DATEDIFF(MINUTE, @DateStart, @DateEnd) AS [Difference in Minutes] -- SQL Query retorna a diferença em horas : 1 hora SELECT DATEDIFF(HOUR, @DateStart, @DateEnd) AS [Difference in Hours]
Abaixo estão duas formas diferentes de calcular a diferença horária entre duas datas.
2. Diferença entre duas datas numa única consulta T-SQL
Para obter a diferença em horas, minutos e segundos, utilize esta consulta, ela só funciona se as horas forem inferiores a 99. Este código utiliza a função de texto RIGHT. Alterar o total em segundos em Horas, Minutos e Segundos, por exemplo com 3 horas = 3600 * 3 = 14400.
DECLARE @TimeInSeconds INT SET @TimeInSeconds = 14400 SELECT RIGHT('0' + CAST(@TimeInSeconds / 3600 AS VARCHAR),2) + ':' + RIGHT('0' + CAST((@TimeInSeconds / 60) % 60 AS VARCHAR),2) + ':' + RIGHT('0' + CAST(@TimeInSeconds % 60 AS VARCHAR),2);
3. Diferença entre duas datas com uma consulta SQL Server
Estas consultas SQL calculam a diferença de tempo usando primeiro os segundos (multiplicado por uma hora em segundos é 60 * 60 = 3600. Depois utilizando os milisegundos (multiplicado por uma hora em milisegundos como 60 * 60 * 1000 = 3600 * 1000 ).
Finalmente mostra o resultado sem os milissegundos usando a função CONVERT() e o formato de data de dados 108.
-- Usando os segundos como base para a conversão select CONVERT(varchar, dateadd(s, 3 * 3600 , getdate()), 108) AS [Horas Minutos Segundos] -- Usando os milissegundos como base para a conversão select CONVERT(varchar, dateadd(ms, 3 * 3600 * 1000, getdate()), 108) AS [Horas Minutos Segundos]
Neste tutorial vimos como calcular uma diferença entre duas datas com SQL Server em horas minutos e segundos. Aqui está a documentação oficial do Microsoft SQL Server sobre a função de tempo DATEADD(). Aqui está um tutorial para aprender a copiar recursivamente ficheiros a partir da linha de comando.
Foi útil para si? Se sim, por favor use-a e partilhe-a!
Be the first to comment