Poniżej znajdują się 4 funkcje umożliwiające zwrócenie roku od daty w MariaDB. Trzy funkcje zwracają tylko rok, a jedna zwraca zarówno rok, jak i tydzień.
YEAR()
Funkcja
YEAR()
funkcja zwraca rok dla podanej daty. Wynik mieści się w zakresie 1000
do 9999
lub 0
dla dat, które mają rok zerowy (np. 0000-00-00
).
Przykład:
SELECT YEAR('2023-07-25');
Wynik:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
EXTRACT()
Funkcja
funkcja pozwala na wyodrębnienie określonej jednostki z daty. Dlatego możesz go użyć do wyodrębnienia roku (jak również innych jednostek) z daty.EXTRACT
()
Przykład:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Wynik:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT()
Funkcja
DATE_FORMAT()
funkcja umożliwia formatowanie daty na podstawie ciągu formatującego. Ciąg formatu określa sposób formatowania daty.
Możesz zatem użyć tej funkcji do zwrócenia roku (jak również dowolnej innej jednostki) od daty. Istnieją różne specyfikatory formatu zwracania roku w różnych formatach. Na przykład rok czterocyfrowy, rok dwucyfrowy itp.
Oto przykład, który zwraca rok w różnych formach:
SELECT
DATE_FORMAT('2023-01-01', '%X') AS "%X",
DATE_FORMAT('2023-01-01', '%x') AS "%x",
DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
DATE_FORMAT('2023-01-01', '%y') AS "%y";
Wynik:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
Zauważ, że %x
zwrócili inny numer roku niż pozostali.
Oto opis każdego z tych specyfikatorów formatu, który wyjaśnia, dlaczego %x
zwrócił inny wynik:
Specyfikator formatu | Opis |
---|---|
%X | Rok czterocyfrowy, gdy pierwszym dniem tygodnia jest niedziela. Używane z %V . |
%x | Rok czterocyfrowy, gdy pierwszym dniem tygodnia jest poniedziałek. Używane z %v . |
%Y | Rok z 4 cyframi. |
%y | Rok z 2 cyframi. |
A oto opis %V
i %v
zgodnie z powyższą tabelą:
Specyfikator formatu | Opis |
---|---|
%V | Numer tygodnia (01-53), gdy pierwszym dniem tygodnia jest niedziela. Używane z %X . |
%v | Numer tygodnia (01-53), gdy pierwszym dniem tygodnia jest poniedziałek. Używane z %x . |
Możemy więc dodać te specyfikatory formatu do powyższego przykładu i uzyskać:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Wynik:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Zauważ, że %x
nie zawsze zwróci inny rok – zależy to od faktycznie użytej daty. Czasami jest to %X
który zwraca inny rok innym.
Przesuńmy datę do przodu o rok:
SELECT
DATE_FORMAT('2024-01-01', '%X') AS "%X",
DATE_FORMAT('2024-01-01', '%x') AS "%x",
DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
DATE_FORMAT('2024-01-01', '%y') AS "%y";
Wynik:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
Tym razem jest to %X
to jest dziwne. Jak wyjaśniono w powyższej tabeli, zależy to od tego, czy pierwszym dniem tygodnia jest niedziela czy poniedziałek.
Oczywiście, jeśli przejdziemy dalej do roku, wszystkie specyfikatory formatu zwracają ten sam rok:
SELECT
DATE_FORMAT('2024-12-12', '%X') AS "%X",
DATE_FORMAT('2024-12-12', '%x') AS "%x",
DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
DATE_FORMAT('2024-12-12', '%y') AS "%y";
Wynik:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów.
YEARWEEK()
Funkcja
YEARWEEK()
funkcja zwraca rok i tydzień dla podanej daty.
Przykład:
SELECT YEARWEEK('2023-01-01');
Wynik:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Rok w wyniku może być inny niż rok w argumencie data dla pierwszego i ostatniego tygodnia roku.
Oto, co się stanie, jeśli przejdziemy do przodu o rok:
SELECT YEARWEEK('2024-01-01');
Wynik:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
YEARWEEK()
funkcja akceptuje opcjonalny drugi argument do określenia trybu. Rzeczywisty wynik uzyskany z tej funkcji będzie zależał od używanego trybu. Jeśli argument mode zostanie pominięty, wartość default_week_format
używana jest zmienna systemowa.
Zobacz, jak YEARWEEK()
Działa w MariaDB, aby uzyskać więcej informacji o trybach i przykładach każdego z nich.