SQL Server Dateff

SQL Server Dateff
As datas são importantes ao trabalhar com bancos de dados. Eles permitem que você inclua um registro de data e hora específico para dados.

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 unidade
-------------------------------------------------- ------------
nanossegundos ns
Microssegundos MCs
milissegundo ms
Segundo S, SS
Minuto mi, n
Hora hh
Semana WK, WW
Dia dd, D
Dia do ano, Dy, Y
Mês mm, m
Quarter QQ, q
Ano sim, AAA

2. 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ça
-----------
285
(1 linha afetada)

Exemplo 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:

-----------
86400
(1 linha afetada)

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ça
--------------------
86400000000000

Exemplo 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:

-----------
201624

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:

--------------------------
201624 horas

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!