Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

Słowa kluczowe: Funkcja NOW() w SQL

Która z funkcji SQL zwraca rok z podanej daty?

A.
LEN()
B.
YEAR()
C.
NOW()
D.
UPPER()
Funkcja YEAR() jest właściwym wyborem, bo jej zadaniem jest wyciągnięcie samego roku z wartości typu data albo data-czas. W praktyce używa się jej wtedy, gdy w kolumnie masz pełną datę, na przykład 2026-03-18, ale do raportu, filtrowania albo grupowania potrzebujesz tylko wartości 2026. Przykład: SELECT YEAR(data_zamowienia) AS rok FROM zamowienia; zwróci rok z każdej daty zamówienia. To jest bardzo typowe w bazach danych, szczególnie przy raportach sprzedaży, statystykach użytkowników czy zestawieniach miesięcznych i rocznych. Moim zdaniem warto od razu pamiętać o dobrej praktyce: daty przechowujemy w typach DATE, DATETIME albo TIMESTAMP, a nie jako zwykły tekst, bo wtedy funkcje daty działają przewidywalnie i baza może lepiej korzystać z indeksów. W różnych systemach SQL składnia bywa trochę inna, np. w PostgreSQL często spotkasz EXTRACT(YEAR FROM data), ale w MySQL i SQL Server funkcja YEAR() jest bardzo popularna. Ważne jest rozumienie idei: YEAR() nie tworzy nowej daty, tylko zwraca liczbową część oznaczającą rok.
W tym pytaniu łatwo pomylić funkcje, bo wszystkie wyglądają podobnie: mają nazwę i nawiasy, ale w SQL nazwa funkcji bardzo konkretnie określa, na jakim typie danych pracuje i co zwraca. LEN() służy do obliczania długości tekstu, czyli liczby znaków w napisie. Przyda się na przykład do sprawdzenia, ile znaków ma nazwisko albo kod produktu, ale nie wyciągnie roku z daty. Jeśli ktoś wybiera LEN(), to zwykle myśli ogólnie: funkcja coś analizuje, więc może zadziała na dacie. Technicznie to zły trop, bo data nie jest tu traktowana jako tekst do mierzenia długości. NOW() też jest związane z czasem, ale robi coś zupełnie innego. Zwraca aktualną datę i godzinę systemową bazy danych, np. moment wykonania zapytania. To przydatne przy zapisie daty utworzenia rekordu, ale nie pobiera roku z podanej daty. Można ewentualnie użyć YEAR(NOW()), żeby dostać bieżący rok, ale samo NOW() zwraca pełny znacznik czasu. UPPER() należy do funkcji tekstowych i zamienia litery na wielkie, na przykład ala na ALA. Nie ma sensu używać jej do dat, bo nie operuje na składnikach kalendarza. Poprawne myślenie jest takie: jeśli potrzebujesz fragmentu daty, szukasz funkcji daty, a konkretnie YEAR(), która zwraca komponent roku.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.