
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
Opanuj SQL z moim kursem!
Poznasz zarówno podstawy, jak i zaawansowane zapytania analityczne (CTE, subqueries, window functions). Nauczysz się pracować na różnych silnikach – na kursie pracujemy zarówno na MySQL, jak i na Postgres. Wszystko zainstalujemy na Twoim komputerze, plus dostaniesz mnóstwo zestawów danych do ćwiczeń.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

