Poniżej znajduje się 5 funkcji, które umożliwiają zwrócenie numeru tygodnia z daty w MariaDB. Cztery zwracają tylko w tygodniu, a jeden zwraca łącznie tydzień i rok.
WEEK()
Funkcja
WEEK()
funkcja zwraca tydzień dla podanej daty.
Przykład:
SELECT WEEK('2023-07-25');
Wynik:
+--------------------+ | WEEK('2023-07-25') | +--------------------+ | 30 | +--------------------+
WEEK()
funkcja przyjmuje 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 WEEK()
Działa w MariaDB, aby uzyskać więcej informacji o trybach i przykładach każdego z nich.
EXTRACT()
Funkcja
funkcja pozwala na wyodrębnienie określonej jednostki z daty. Dlatego możesz go użyć do wyodrębnienia tygodnia (jak również innych jednostek) z daty.EXTRACT
()
Przykład:
SELECT EXTRACT(WEEK FROM '2023-07-25');
Wynik:
+---------------------------------+ | EXTRACT(WEEK FROM '2023-07-25') | +---------------------------------+ | 30 | +---------------------------------+
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 tygodnia (jak również dowolnej innej jednostki) od daty. Istnieją różne opcje zwracania numeru tygodnia, w zależności od dnia, w którym zaczyna się tydzień itp.
Oto przykład, który zwraca tydzień w różnych formach:
SELECT
DATE_FORMAT('2023-01-01', '%U') AS "%U",
DATE_FORMAT('2023-01-01', '%u') AS "%u",
DATE_FORMAT('2023-01-01', '%V') AS "%V",
DATE_FORMAT('2023-01-01', '%v') AS "%v";
Wynik:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 01 | 00 | 01 | 52 | +------+------+------+------+
Oto opis każdego z tych specyfikatorów formatu:
Specyfikator formatu | Opis |
---|---|
%U | Numer tygodnia (00-53), kiedy pierwszym dniem tygodnia jest niedziela. |
%u | Numer tygodnia (00-53), kiedy pierwszym dniem tygodnia jest poniedziałek. |
%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 . |
A oto opis %X
i %x
zgodnie z powyższą tabelą:
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 . |
W razie potrzeby możemy połączyć specyfikatory formatu, aby zwrócić razem rok i tydzień:
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 | +----------+----------+
Zwróć uwagę, że numer tygodnia nie zawsze będzie odzwierciedlał powyższe przykłady – zależy to od rzeczywistej używanej daty.
Przesuńmy datę do przodu o rok:
SELECT
DATE_FORMAT('2024-01-01', '%U') AS "%U",
DATE_FORMAT('2024-01-01', '%u') AS "%u",
DATE_FORMAT('2024-01-01', '%V') AS "%V",
DATE_FORMAT('2024-01-01', '%v') AS "%v";
Wynik:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 00 | 01 | 53 | 01 | +------+------+------+------+
Tym razem otrzymujemy inny zestaw wyników.
Oto, co się dzieje, gdy przechodzimy do przodu w roku:
SELECT
DATE_FORMAT('2024-12-12', '%U') AS "%U",
DATE_FORMAT('2024-12-12', '%u') AS "%u",
DATE_FORMAT('2024-12-12', '%V') AS "%V",
DATE_FORMAT('2024-12-12', '%v') AS "%v";
Wynik:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 49 | 50 | 49 | 50 | +------+------+------+------+
Jak widać, zwracanie numeru tygodnia nie zawsze jest tak jasne, jak byśmy sobie tego życzyli.
Zobacz ciągi formatujące MariaDB, aby uzyskać pełną listę ciągów formatujących/specyfikatorów, których można używać z DATE_FORMAT()
.
YEARWEEK()
Funkcja
Można dostać tydzień i rok za jednym razem. 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 | +------------------------+
Podobnie jak w przypadku WEEK()
funkcja YEARWEEK()
funkcja przyjmuje 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.