
Pracując z bazami danych, często muszę manipulować danymi dotyczącymi dat i czasów. Jedną z popularniejszych funkcji wykorzystywanych do tego celu w SQL jest MONTH
. Dzięki niej mogę łatwo uzyskać numer miesiąca z wartości typu DATE
lub DATETIME
. W tym artykule pokażę, jak działa MONTH
w języku SQL oraz jakie są jego praktyczne zastosowania.
Co robi funkcja MONTH w SQL?
Funkcja MONTH
zwraca wartość całkowitą reprezentującą miesiąc z podanej wartości daty. Wynik zawiera liczby od 1 do 12, gdzie:
- 1 oznacza styczeń,
- 2 oznacza luty,
- 3 oznacza marzec,
- …
- 12 oznacza grudzień.
Funkcja ta znajduje zastosowanie w różnych systemach bazodanowych, takich jak MySQL, SQL Server czy PostgreSQL.
Podstawowy sposób użycia MONTH
Aby wyciągnąć numer miesiąca z daty w SQL, wystarczy użyć funkcji MONTH
wraz z dowolną kolumną typu DATE
lub DATETIME
. Oto przykładowe zapytanie:
SELECT MONTH('2024-06-15') AS numer_miesiaca;
Wynik tego zapytania to:
numer_miesiaca |
---|
6 |
Jak widzisz, funkcja MONTH
zwróciła wartość 6, ponieważ przekazana data pochodzi z czerwca.
Przykłady zastosowania funkcji MONTH
Pogrupowanie danych według miesiąca
Jeśli mam tabelę zawierającą informacje o zamówieniach i chcę policzyć, ile zamówień złożono w poszczególnych miesiącach, mogę użyć funkcji MONTH
w połączeniu z GROUP BY
:
SELECT MONTH(data_zamowienia) AS miesiac, COUNT(*) AS liczba_zamowien
FROM zamowienia
GROUP BY MONTH(data_zamowienia)
ORDER BY miesiac;
Wynik tego zapytania może wyglądać tak:
miesiac | liczba_zamowien |
---|---|
1 | 124 |
2 | 98 |
3 | 150 |
Dzięki temu mogę szybko zorientować się, w których miesiącach składano najwięcej zamówień.
Filtrowanie danych według miesiąca
Jeśli chcę wyświetlić tylko zamówienia z konkretnego miesiąca (np. z czerwca), mogę użyć funkcji MONTH
w klauzuli WHERE
:
SELECT *
FROM zamowienia
WHERE MONTH(data_zamowienia) = 6;
To zapytanie zwróci wszystkie zamówienia z czerwca – przydatne, gdy analizuję wyniki sprzedażowe w konkretnym okresie.
Łączenie funkcji MONTH z DATENAME
W SQL Server mogę użyć funkcji DATENAME
, aby zwrócić nazwę miesiąca zamiast jego numeru:
SELECT DATENAME(MONTH, '2024-06-15') AS nazwa_miesiaca;
Wynikiem tego zapytania będzie:
nazwa_miesiaca |
---|
Czerwiec |
To szczególnie przydatne, gdy chcę generować raporty w bardziej czytelnej formie.
Funkcja MONTH w różnych systemach bazodanowych
Funkcja MONTH
działa w różnych systemach baz danych, ale w niektórych przypadkach istnieją alternatywne sposoby uzyskania tych samych wyników:
- MySQL: Funkcja
MONTH()
działa bez zmian. - SQL Server: Wspiera
MONTH()
, ale można też użyćDATEPART(MONTH, data)
. - PostgreSQL: Nie ma funkcji
MONTH()
, ale można uzyskać miesiąc poprzezEXTRACT(MONTH FROM data)
.
Przykład dla PostgreSQL:
SELECT EXTRACT(MONTH FROM '2024-06-15'::DATE) AS numer_miesiaca;
Podsumowanie
Funkcja MONTH
w SQL to prosty, lecz bardzo użyteczny sposób na operowanie datami, zwłaszcza podczas analizowania danych sprzedażowych, generowania raportów czy filtrowania wyników. Obsługuje szeroki wachlarz zastosowań, od prostych zapytań po bardziej zaawansowane analizy.
Jeśli pracuję z różnymi systemami bazodanowymi, warto pamiętać, że PostgreSQL wymaga użycia EXTRACT
zamiast MONTH
. Jednak bez względu na system, znajomość tej funkcji znacząco ułatwia pracę z danymi.
Inny ciekawy artykuł:
Jak działa YEAR 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.