Baza wiedzy / SQL
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.
