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.