W MariaDB, WEEKDAY()
to wbudowana funkcja daty i czasu, która zwraca dzień tygodnia od podanej daty.
Przyjmuje jeden argument, którym jest data, z której chcesz wyodrębnić dzień tygodnia.
Zwraca dzień jako liczbę. Numeracja indeksów zaczyna się od zera na poniedziałek (tj. 0
=poniedziałek, 1
=wtorek itd.). To jest w przeciwieństwie do DAYOFWEEK()
, który jest zgodny ze standardem ODBC (1
=Niedziela, 2
=poniedziałek itd.).
Składnia
Składnia wygląda tak:
WEEKDAY(date)
Gdzie date
to data, od której należy pobrać dzień tygodnia.
Przykład
Oto przykład:
SELECT WEEKDAY('2030-01-25');
Wynik:
+-----------------------+ | WEEKDAY('2030-01-25') | +-----------------------+ | 4 | +-----------------------+
W porównaniu z nazwą dnia
Oto kolejny, obok DAYNAME()
aby zwrócić nazwę dnia:
SELECT
WEEKDAY('2030-01-21'),
DAYNAME('2030-01-21');
Wynik:
+-----------------------+-----------------------+ | WEEKDAY('2030-01-21') | DAYNAME('2030-01-21') | +-----------------------+-----------------------+ | 0 | Monday | +-----------------------+-----------------------+
Jak wspomniano, numeracja indeksów zaczyna się od 0 w poniedziałek.
Oto niedziela:
SELECT
WEEKDAY('2030-01-20'),
DAYNAME('2030-01-20');
Wynik:
+-----------------------+-----------------------+ | WEEKDAY('2030-01-20') | DAYNAME('2030-01-20') | +-----------------------+-----------------------+ | 6 | Sunday | +-----------------------+-----------------------+
Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT WEEKDAY('2030-01-24 10:30:45');
Wynik:
+--------------------------------+ | WEEKDAY('2030-01-24 10:30:45') | +--------------------------------+ | 3 | +--------------------------------+
Zero dni
Zero dni daje wynik null
.
Przykład:
SELECT WEEKDAY('2030-00-00');
Wynik:
+-----------------------+ | WEEKDAY('2030-00-00') | +-----------------------+ | NULL | +-----------------------+
Daty numeryczne
Możliwe jest również przekazywanie dat jako liczby, o ile ma to sens jako data.
Przykład
SELECT WEEKDAY(20300125);
Wynik:
+-------------------+ | WEEKDAY(20300125) | +-------------------+ | 4 | +-------------------+
Lub nawet następujący (który używa dwucyfrowego roku):
SELECT WEEKDAY(300125);
Wynik:
+-----------------+ | WEEKDAY(300125) | +-----------------+ | 4 | +-----------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:
SELECT WEEKDAY(20300135);
Wynik:
+-------------------+ | WEEKDAY(20300135) | +-------------------+ | NULL | +-------------------+
Inne ograniczniki
Możesz użyć innych ograniczników daty. MariaDB jest dość wyrozumiała, jeśli chodzi o ograniczniki dat. Oto kilka poprawnych przykładów:
SELECT
WEEKDAY('2030/01/25'),
WEEKDAY('2030,01,25'),
WEEKDAY('2030:01:25'),
WEEKDAY('2030;01!25');
Wynik (przy użyciu wyjścia pionowego):
WEEKDAY('2030/01/25'): 4 WEEKDAY('2030,01,25'): 4 WEEKDAY('2030:01:25'): 4 WEEKDAY('2030;01!25'): 4
Aktualna data
Możemy przekazać NOW()
jako argument daty, aby użyć bieżącej daty:
SELECT
NOW(),
WEEKDAY(NOW());
Wynik:
+---------------------+----------------+ | NOW() | WEEKDAY(NOW()) | +---------------------+----------------+ | 2021-05-15 09:44:50 | 5 | +---------------------+----------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu WEEKDAY()
zwraca null
:
SELECT WEEKDAY('Homer');
Wynik:
+------------------+ | WEEKDAY('Homer') | +------------------+ | NULL | +------------------+
Brakujący argument
Wywołanie WEEKDAY()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT WEEKDAY();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKDAY'
I kolejny przykład:
SELECT WEEKDAY('2030-01-25', '2045-05-08');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKDAY'