Baza wiedzy / SQL
Jak działa EXTRACT w języku SQL? Przykłady zastosowania

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.
