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 jednostkowe2. 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óżnicaPrzykł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:
-----------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óżnicaPrzykł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:
-----------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:
--------------------------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!