Jak działa DATE_TRUNC w języku SQL? Przykłady zastosowania

Jak działa DATE_TRUNC w języku SQL? Przykłady zastosowania

Jeśli pracujesz z danymi czasowymi w SQL, na pewno spotkałeś się z potrzebą ich grupowania lub zaokrąglania do pełnych jednostek czasu, takich jak godzina, dzień czy miesiąc. Właśnie do tego służy funkcja DATE_TRUNC. W tym artykule wyjaśnię, jak działa DATE_TRUNC w języku SQL i pokażę konkretne przykłady zastosowania.

Co to jest DATE_TRUNC?

DATE_TRUNC to funkcja w SQL, która pozwala „obciąć” wartości daty i czasu do określonego poziomu dokładności. Oznacza to, że zamiast pełnej wartości daty i godziny możemy otrzymać np. tylko pierwszy dzień miesiąca lub początek konkretnej godziny.

Podstawowa składnia funkcji wygląda następująco:

DATE_TRUNC('jednostka czasu', wartość_datowa)

Gdzie:

  • ’jednostka czasu’ – określa poziom dokładności, np. 'day’ dla dnia, 'month’ dla miesiąca.
  • wartość_datowa – dowolna kolumna lub wartość typu TIMESTAMP, DATE lub DATETIME.

Przykłady zastosowania DATE_TRUNC

Przejdźmy teraz do konkretnych przykładów.

1. Zaokrąglanie do początku dnia

Jeśli chcemy uzyskać datę bez godzin, minut i sekund, wystarczy użyć jednostki 'day':

SELECT DATE_TRUNC('day', '2024-06-12 14:34:56');

Wynik:

Oryginalna data Obcięta data
2024-06-12 14:34:56 2024-06-12 00:00:00

2. Grupowanie danych po miesiącach

Chcąc przeprowadzić analizę np. miesięcznych przychodów, możemy wykorzystać poniższe zapytanie:

SELECT DATE_TRUNC('month', data_zamowienia) AS miesiac, SUM(kwota) 
FROM zamowienia 
GROUP BY DATE_TRUNC('month', data_zamowienia) 
ORDER BY miesiac;

To pozwoli nam na agregację wartości dla każdego miesiąca.

3. Zaokrąglanie do początku godziny

Jeśli analizujemy dane na poziomie godzinnym, używamy 'hour' jako jednostki:

SELECT DATE_TRUNC('hour', '2024-06-12 14:34:56');

Wynik to:

Oryginalna data Obcięta data
2024-06-12 14:34:56 2024-06-12 14:00:00

Obsługiwane jednostki czasu

DATE_TRUNC obsługuje różne jednostki, w tym:

  • 'microsecond' – mikrosekunda
  • 'millisecond' – milisekunda
  • 'second' – sekunda
  • 'minute' – minuta
  • 'hour' – godzina
  • 'day' – dzień
  • 'week' – tydzień
  • 'month' – miesiąc
  • 'quarter' – kwartał
  • 'year' – rok

Podsumowanie

Funkcja DATE_TRUNC w języku SQL to przydatne narzędzie do manipulowania datami i grupowania danych w analizach czasowych. Dzięki niej możemy łatwo uzyskać wartości zaokrąglone do wybranego poziomu dokładności, co jest szczególnie użyteczne w raportach i wizualizacjach wyników.

 

Inny ciekawy artykuł:

Jak działa CURRENT_TIMESTAMP w języku SQL? Przykłady zastosowania

KajoDataSpace