
Funkcja HOUR w SQL jest niezwykle przydatnym narzędziem, które pozwala na ekstrakcję godziny z wartości typu DATETIME lub TIME. Jeśli często pracujesz z danymi czasowymi, na pewno warto ją znać i umieć stosować w praktyce.
Jak działa HOUR w języku SQL?
Funkcja HOUR zwraca godzinę (w zakresie od 0 do 23) z wartości daty i czasu. Jest dostępna w wielu systemach zarządzania bazami danych (DBMS), w tym w MySQL, MariaDB oraz niektórych wariantach SQL Server i PostgreSQL.
Podstawowa składnia tej funkcji wygląda następująco:
SELECT HOUR(data_i_czas) FROM nazwa_tabeli;
Jeśli wartość data_i_czas wynosi '2024-06-15 14:30:00', funkcja zwróci liczbę 14, czyli godzinę z tego znacznika czasu.
Przykłady zastosowania funkcji HOUR
Aby lepiej zrozumieć, jak działa HOUR w SQL, przeanalizujmy kilka przykładów.
1. Pobieranie godziny dla każdej wartości w tabeli
Załóżmy, że mamy tabelę zamowienia z kolumną data_zamowienia, która przechowuje wartość typu DATETIME. Chcemy uzyskać godzinę złożenia każdego zamówienia.
SELECT id_zamowienia, HOUR(data_zamowienia) AS godzina_zamowienia
FROM zamowienia;
2. Filtrowanie danych na podstawie godziny
Możesz również użyć funkcji HOUR do filtrowania zapisów w bazie danych. Na przykład, jeśli chcesz znaleźć wszystkie zamówienia złożone między godziną 9 a 12:
SELECT * FROM zamowienia
WHERE HOUR(data_zamowienia) BETWEEN 9 AND 12;
3. Grupowanie zamówień według godziny
Jeśli chcesz sprawdzić, o której godzinie składanych jest najwięcej zamówień, wystarczy użyć funkcji HOUR w połączeniu z GROUP BY i COUNT.
SELECT HOUR(data_zamowienia) AS godzina, COUNT(*) AS liczba_zamowien
FROM zamowienia
GROUP BY godzina
ORDER BY liczba_zamowien DESC;
Obsługa NULL i wartości błędnych
Warto pamiętać, że jeśli kolumna przekazana do funkcji HOUR zawiera wartość NULL, wynik również będzie NULL. Dlatego czasami warto użyć funkcji COALESCE, aby zastąpić wartość NULL domyślną wartością, np. 0.
SELECT COALESCE(HOUR(data_zamowienia), 0) AS godzina
FROM zamowienia;
Porównanie funkcji HOUR w różnych bazach danych
Nie wszystkie systemy bazodanowe obsługują funkcję HOUR w identyczny sposób. Oto kilka różnic:
| System bazodanowy | Sposób użycia |
|---|---|
| MySQL / MariaDB | HOUR(data_i_czas) |
| SQL Server | DATEPART(HOUR, data_i_czas) |
| PostgreSQL | EXTRACT(HOUR FROM data_i_czas) |
Podsumowanie
Funkcja HOUR w SQL jest prostym, ale bardzo użytecznym narzędziem do analizy danych czasowych. Możemy jej używać do ekstrakcji godzin w różnych zapytaniach, filtracji wyników oraz grupowania danych na podstawie godziny. Chociaż jej implementacja może się różnić w zależności od systemu bazodanowego, ogólna funkcjonalność pozostaje taka sama. Dzięki tej funkcji możesz lepiej analizować trendy w danych, na przykład sprawdzając, o której godzinie klienci najczęściej składają zamówienia.
Inny ciekawy artykuł:
Jak działa DAY 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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

