SQL Server Datediff

SQL Server Datediff
Daty są ważne podczas pracy z bazami danych. Pozwalają na podanie konkretnego znacznika czasu dla danych.

Korzystając z tego przewodnika, dowiesz się, jak obliczyć różnicę między dwiema datami za pomocą funkcji SQL Server Datediff ().

Podstawowe użycie

Funkcja Datediff umożliwia przekazanie wartości daty rozpoczęcia i zakończenia. Następnie oblicza i zwraca różnicę między nimi w latach, miesiącach, tygodniach, dniach itp.

Składnia funkcji jest jako:

datediff (jednostka, start_date, end_date);

Argumenty funkcyjne

Funkcja trzy główne argumenty wyrażone jako:

1. Jednostka - reprezentuje jednostki, w ramach których funkcja zgłosi różnicę między określoną datą rozpoczęcia i końcowego. SQL Server nie obsługuje przekazywania wartości parametru jednostki jako zmiennej ciągu, takiej jak „rok”;

Poniższa tabela pokazuje jednostkę i skrót, którego można użyć w parametrze jednostki.

Skrócenie jednostkowe
-------------------------------------------------- ------------
Nanosekund NS
Microsekund MCS
milisekundowy ms
Second S, SS
Minute MI, n
Godzina hh
Tydzień WK, WW
Dzień DD, D
Dzień roku, dy, y
Miesiąc MM, M
Quarter QQ, Q
Rok Yy, yyyy

2. start_date i end_date - określa dwie daty, których różnicę należy obliczyć. Wartość dowolnego argumentu może być dosłownym ciągiem lub wyrażeniem, które może rozwiązać wartość typu: data, dateTime, DateTim2, DateTimeOffset, czas, małyDateTime.
Aby uniknąć dwuznaczności, rozważ użycie czterech cyfr do reprezentowania roku.

Funkcja zwraca wartość

Funkcja Datediff zwraca typ INT, reprezentując różnicę daty rozpoczęcia i zakończenia. Czasami różnica może być poza zasięgiem dla wielkości liczby całkowitej. Jeśli tak się stanie, funkcja Datediff zwróci błąd. Rozważ użycie funkcji datediff_big dla takiego scenariusza.

SQL Server Datediff () Przykłady

Poniższe przykłady są przydatne do zilustrowania, jak pracować z funkcją Datediff ().

Przykład 1:

Rozważ przykład pokazany poniżej:

Wybierz Datediff (miesiąc, „1998-09-06”, „2022-06-06”) jako różnica;

Powyższe zapytanie powinno zwrócić całkowitą różnicę miesiąca między datą rozpoczęcia i zakończenia jako:

różnica
-----------
285
(1 rząd dotknięty)

Przykład 2:

Załóżmy, że chcesz obliczyć, ile sekund jest w ciągu dnia? Możesz użyć funkcji Datediff, jak pokazano:

Wybierz Datediff (drugi, „2022-01-01”, „2022-01-02”) jako różnica;

Powyższy przykład powinien zwrócić liczbę sekund w ciągu jednego dnia jako:

-----------
86400
(1 rząd dotknięty)

Przykład 3:

Możesz napotkać scenariusz, w którym różnica między dwiema datami jest duża niż maksimum dla typu liczb całkowitych. Na przykład różnica w nanosekund w ciągu jednego dnia.

Rozważ przykładowe zapytanie poniżej:

Wybierz Datediff (Nanosecond, „2022-01-01”, „2022-01-02”) jako różnica;

Jeśli uruchomimy powyższe zapytanie, SQL Server zwraca błąd przepełnienia jako:

Funkcja Datediff spowodowała przepełnienie. Liczba daty oddzielających dwie instancje daty/godziny jest zbyt duże. Spróbuj użyć Datediff z mniej precyzyjną częścią daty.

Aby to rozwiązać, użyj funkcji datediff_big jako:

Wybierz datediff_big (Nanosecond, „2022-01-01”, „2022-01-02”) jako różnica;

W tym przykładzie zapytanie zwraca liczbę nanosekund w ciągu jednego dnia jako:

różnica
--------------------
86400000000000

Przykład 4:

Poniższy przykład pokazuje, jak obliczyć różnicę w godzinach między 1998 a 2021.

Wybierz Datediff (Hour, „1998-01-01”, „2021-01-01”);

Powstała wartość to:

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

Przykład 5:

Ponieważ wartość zwracana funkcji Datediff jest liczbą całkowitą, możemy rzucić ją na ciąg.

Na przykład:

Wybierz Cast (Datediff (Hour, „1998-01-01”, „2021-01-01”) jako VARCHAR (20)) + „Hours”;

Powyższy przykład rzuca wartość z ciągów liczb całkowitych i dodaje ciąg konatenacji.

Wynik przykładowy jest:

--------------------------
201624 godziny

Ostateczne słowa

Mamy nadzieję, że podobało Ci się i nauczyłeś się obliczyć różnice między dwiema datami za pomocą różnych jednostek na SQL Server. Przykłady podane w tym przewodniku mogą pomóc w bardziej wydajnym manipulowaniu datami i godzinami danych.

Dziękuje za przeczytanie!