Usando este guia, você aprenderá como calcular a diferença entre duas datas usando a função SQL Server datediff ().
Uso básico
A função datediff permite que você passe os valores de início e término. Em seguida, calcula e retorna a diferença entre eles em anos, meses, semanas, dias, etc.
A sintaxe da função é como:
datediff (unidade, start_date, end_date);Argumentos de função
A função Três argumentos principais expressos como:
1. Unidade - representa as unidades sob as quais a função relatará a diferença entre a data de início e a data de início especificada. O SQL Server não suporta passar o valor do parâmetro da unidade como uma variável de uma string como 'ano';
A tabela abaixo mostra a unidade e a abreviação que você pode usar no parâmetro da unidade.
Abreviação da unidade2. start_date & end_date - define as duas datas cuja diferença deve ser calculada. O valor de qualquer argumento pode ser uma string literal ou uma expressão que pode resolver um valor do tipo: data, datetime, dateTim2, DateTimeOffset, tempo, smallDateTime.
Para evitar a ambiguidade, considere usar quatro dígitos para representar um ano.
Valor de retorno da função
A função datediff retorna um tipo int, representando a diferença de início e término. Às vezes, a diferença pode estar fora de alcance para o tamanho de um número inteiro. Se isso acontecer, a função datediff retornará um erro. Considere usar a função datediff_big para esse cenário.
Exemplos SQL Server DATEDIFF ()
Os exemplos a seguir são úteis para ilustrar como trabalhar com a função datediff ().
Exemplo 1:
Considere o exemplo mostrado abaixo:
Selecione Datediff (mês, '1998-09-06', '2022-06-06') como diferença;A consulta acima deve retornar a diferença total do mês entre a data de início e o término como:
diferençaExemplo 2:
Suponha que você queira calcular quantos segundos existem em um dia? Você pode usar a função datediff como mostrado:
Selecione DATEDIFF (segundo, '2022-01-01', '2022-01-02') como diferença;O exemplo acima deve retornar o número de segundos em um dia como:
-----------Exemplo 3:
Você pode encontrar um cenário em que a diferença entre duas datas é grande que o máximo para um tipo inteiro. Por exemplo, a diferença de nanossegundos em um dia.
Considere a consulta de exemplo abaixo:
Selecione DATEDIFF (Nanossegundo, '2022-01-01', '2022-01-02') como diferença;Se executarmos a consulta acima, o SQL Server retornará um erro de estouro como:
A função datediff resultou em um transbordamento. O número de datepartts que separam duas instâncias de data/hora é muito grande. Tente usar o datediff com um datePart menos preciso.Para resolver isso, use a função datediff_big como:
Selecione DATEDIFF_BIG (NANOSOSEGOND, '2022-01-01', '2022-01-02') como diferença;Neste exemplo, a consulta retorna o número de nanossegundos em um dia como:
diferençaExemplo 4:
O exemplo abaixo mostra como calcular a diferença de horas entre 1998 e 2021.
Selecione Datediff (Hour, '1998-01-01', '2021-01-01');O valor resultante é como:
-----------Exemplo 5:
Como o valor de retorno da função datediff é um número inteiro, podemos lançá -lo em uma string, permitindo que você execute concatenação de string.
Por exemplo:
Selecione o elenco (DATEDIFF (Hour, '1998-01-01', '2021-01-01') como varchar (20)) + 'horas';O exemplo acima lança o valor de uma string inteira e adiciona uma concatenação de string.
O resultado do exemplo é como:
--------------------------Palavras finais
Esperamos que você tenha gostado e aprendido a calcular as diferenças entre duas datas usando várias unidades no SQL Server. Os exemplos fornecidos neste guia podem ajudá -lo a manipular dados de data e hora com mais eficiência.
Obrigado pela leitura!