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

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 do EXTRACT.
  • 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

KajoDataSpace