
Praca z danymi w formacie daty i czasu jest nieodłącznym elementem analizy i obsługi baz danych. Często zdarza się, że potrzebujemy wyciągnąć konkretną część wartości daty, na przykład sam rok, miesiąc czy dzień. W języku SQL służy do tego funkcja EXTRACT
. W tym artykule wyjaśniam, jak działa EXTRACT w języku SQL oraz pokazuję przykłady jej zastosowania.
Co to jest EXTRACT i jak działa?
Funkcja EXTRACT
w SQL pozwala na wyodrębnienie określonej części wartości typu DATE
lub DATETIME
. Dzięki niej możemy uzyskać np. tylko rok, miesiąc, dzień, godzinę czy minutę z pełnej daty.
Podstawowa składnia funkcji EXTRACT
wygląda tak:
EXTRACT(część_daty FROM wartość_daty)
Gdzie:
część_daty
– określa, którą część daty chcemy wyciągnąć, np. YEAR, MONTH, DAY, HOUR itp.wartość_daty
– to wyrażenie reprezentujące typ daty lub czas.
Przykłady zastosowania funkcji EXTRACT
Spójrzmy na kilka praktycznych przykładów pokazujących, jak działa EXTRACT w języku SQL.
1. Pobranie roku z daty
Załóżmy, że mamy tabelę zamówienia
z kolumną data_zamówienia
. Chcemy znaleźć wszystkie zamówienia z konkretnego roku.
SELECT EXTRACT(YEAR FROM data_zamówienia) AS rok_zamówienia, COUNT(*) AS liczba_zamówień
FROM zamówienia
GROUP BY rok_zamówienia;
Ten zapytanie zwróci listę lat wraz z liczbą zamówień w każdym roku.
2. Pobranie miesiąca z daty
Jeśli chcemy sprawdzić, w którym miesiącu było najwięcej zamówień, możemy użyć poniższego zapytania:
SELECT EXTRACT(MONTH FROM data_zamówienia) AS miesiąc, COUNT(*) AS liczba_zamówień
FROM zamówienia
GROUP BY miesiąc
ORDER BY liczba_zamówień DESC;
To zapytanie pogrupuje dane według miesięcy i posortuje je w kolejności od największej liczby zamówień.
3. Pobranie dnia tygodnia
Czasem chcemy sprawdzić, w które dni tygodnia użytkownicy wykonywali najwięcej operacji.
SELECT EXTRACT(DOW FROM data_zamówienia) AS dzień_tygodnia, COUNT(*) AS liczba_zamówień
FROM zamówienia
GROUP BY dzień_tygodnia
ORDER BY liczba_zamówień DESC;
W tym przypadku funkcja EXTRACT(DOW FROM ...)
zwraca wartość liczbową od 0 (niedziela) do 6 (sobota).
Obsługiwane jednostki czasu w funkcji EXTRACT
Funkcja EXTRACT
obsługuje wiele jednostek czasu. Oto najczęściej używane:
Jednostka | Opis | Przykład wyniku |
---|---|---|
YEAR | Rok | 2024 |
MONTH | Miesiąc | 6 |
DAY | Dzień miesiąca | 15 |
DOW | Dzień tygodnia (0 = niedziela) | 2 |
HOUR | Godzina | 14 |
MINUTE | Minuta | 30 |
SECOND | Sekunda | 45 |
Różnice między EXTRACT a innymi funkcjami daty w SQL
Warto też wiedzieć, że EXTRACT
nie jest jedyną funkcją pozwalającą pracować z częściami daty w SQL. Oto kilka innych popularnych metod:
DATEPART()
– dostępna w SQL Server i Sybase, działa podobnie doEXTRACT
.YEAR()
,MONTH()
,DAY()
– funkcje specyficzne dla MySQL i SQL Server.TO_CHAR()
– w bazach danych Oracle pozwala na konwersję dat na tekst.
Podsumowanie
Funkcja EXTRACT
to potężne narzędzie umożliwiające wyodrębnianie konkretnych jednostek czasu z wartości daty. Może być bardzo pomocna w raportowaniu, analizie danych czy grupowaniu rekordów według elementów czasowych. Dzięki jej zastosowaniu można w prosty sposób uzyskać rok, miesiąc, dzień, godzinę czy inne jednostki.
Znając EXTRACT
, można efektywnie zarządzać danymi związanymi z czasem i wykorzystywać je do generowania istotnych raportów oraz analiz.
Inny ciekawy artykuł:
Jak działa DATEDIFF 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.