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