W MariaDB, DAYNAME()
to wbudowana funkcja daty i czasu, która zwraca nazwę dnia tygodnia dla podanej daty.
Przyjmuje jeden argument, którym jest data, z której chcesz wyodrębnić nazwę dnia.
Składnia
Składnia wygląda tak:
DAYNAME(date)
Gdzie date
to data, z której należy pobrać nazwę dnia.
Przykład
Oto przykład:
SELECT DAYNAME('2045-10-17');
Wynik:
+-----------------------+ | DAYNAME('2045-10-17') | +-----------------------+ | Tuesday | +-----------------------+
Język
Język używany do nazwy dnia jest kontrolowany przez wartość lc_time_names
zmienna systemowa.
Oto przykład, który pokazuje, jak to wpływa na wynik:
SET lc_time_names = 'de_DE';
SELECT DAYNAME('2045-10-17');
Wynik:
+-----------------------+ | DAYNAME('2045-10-17') | +-----------------------+ | Dienstag | +-----------------------+
I przełączenie z powrotem do en_US
, co jest ustawieniem domyślnym:
SET lc_time_names = 'en_US';
SELECT DAYNAME('2045-10-17');
Wynik:
+-----------------------+ | DAYNAME('2045-10-17') | +-----------------------+ | Tuesday | +-----------------------+
Oto lista lokalizacji obsługiwanych przez MariaDB i oto jak zwrócić własną listę dostępnych lokalizacji.
Skoro już przy tym jesteśmy, oto post wyjaśniający, jak sprawdzić wartość swojego lc_time_names
zmienna systemowa.
Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT DAYNAME('2030-01-25 10:30:45');
Wynik:
+--------------------------------+ | DAYNAME('2030-01-25 10:30:45') | +--------------------------------+ | Friday | +--------------------------------+
Zero dni
Posiadanie dnia zerowego w dacie zwraca null
:
SELECT DAYNAME('2030-00-00');
Wynik:
+-----------------------+ | DAYNAME('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 DAYNAME(20201108);
Wynik:
+-------------------+ | DAYNAME(20201108) | +-------------------+ | Sunday | +-------------------+
Lata dwucyfrowe są w porządku:
SELECT DAYNAME(201108);
Wynik:
+-----------------+ | DAYNAME(201108) | +-----------------+ | Sunday | +-----------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część miesiąca do nieprawidłowego miesiąca:
SELECT DAYNAME(209908);
Wynik:
+-----------------+ | DAYNAME(209908) | +-----------------+ | 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
DAYNAME('2027/08/19'),
DAYNAME('2027,08,19'),
DAYNAME('2027:08:19'),
DAYNAME('2027;08!19');
Wynik (przy użyciu wyjścia pionowego):
DAYNAME('2027/08/19'): Thursday DAYNAME('2027,08,19'): Thursday DAYNAME('2027:08:19'): Thursday DAYNAME('2027;08!19'): Thursday
Aktualna data
Możemy przekazać NOW()
jako argument daty, aby użyć bieżącej daty:
SELECT
NOW(),
DAYNAME(NOW());
Wynik:
+---------------------+----------------+ | NOW() | DAYNAME(NOW()) | +---------------------+----------------+ | 2021-05-13 13:29:10 | Thursday | +---------------------+----------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu DAYNAME()
zwraca null
:
SELECT DAYNAME('Dang!');
Wynik:
+------------------+ | DAYNAME('Dang!') | +------------------+ | NULL | +------------------+
Brakujący argument
Wywołanie DAYNAME()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT DAYNAME();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYNAME'
I kolejny przykład:
SELECT DAYNAME('2030-01-25', '2045-05-08');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYNAME'