
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, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.