W MariaDB, DAYOFYEAR()
to wbudowana funkcja daty i czasu, która zwraca dzień roku od podanej daty.
Przyjmuje jeden argument, czyli datę, z której chcesz wyodrębnić dzień w roku.
Zwraca dzień jako liczbę z zakresu 1
do 366
.
Składnia
Składnia wygląda tak:
DAYOFYEAR(date)
Gdzie date
to data, z której należy pobrać dzień w roku.
Przykład
Oto przykład:
SELECT DAYOFYEAR('2030-12-25');
Wynik:
+-------------------------+ | DAYOFYEAR('2030-12-25') | +-------------------------+ | 359 | +-------------------------+
Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT DAYOFYEAR('2030-02-01 10:30:45');
Wynik:
+----------------------------------+ | DAYOFYEAR('2030-02-01 10:30:45') | +----------------------------------+ | 32 | +----------------------------------+
Zero dni
Zero dni daje wynik null
.
Przykład:
SELECT DAYOFYEAR('2030-00-00');
Wynik:
+-------------------------+ | DAYOFYEAR('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 DAYOFYEAR(20301125);
Wynik:
+---------------------+ | DAYOFYEAR(20301125) | +---------------------+ | 329 | +---------------------+
Lub nawet następujący (który używa dwucyfrowego roku):
SELECT DAYOFYEAR(301125);
Wynik:
+-------------------+ | DAYOFYEAR(301125) | +-------------------+ | 329 | +-------------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:
SELECT DAYOFYEAR(20300135);
Wynik:
+---------------------+ | DAYOFYEAR(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
DAYOFYEAR('2030/06/25'),
DAYOFYEAR('2030,06,25'),
DAYOFYEAR('2030:06:25'),
DAYOFYEAR('2030;06!25');
Wynik (przy użyciu wyjścia pionowego):
DAYOFYEAR('2030/06/25'): 176 DAYOFYEAR('2030,06,25'): 176 DAYOFYEAR('2030:06:25'): 176 DAYOFYEAR('2030;06!25'): 176
Aktualna data
Możemy przekazać NOW()
jako argument daty, aby użyć bieżącej daty:
SELECT
NOW(),
DAYOFYEAR(NOW());
Wynik:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2021-05-16 09:05:57 | 136 | +---------------------+------------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu DAYOFYEAR()
zwraca null
:
SELECT DAYOFYEAR('Friday');
Wynik:
+---------------------+ | DAYOFYEAR('Friday') | +---------------------+ | NULL | +---------------------+
Brakujący argument
Wywołanie DAYOFYEAR()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT DAYOFYEAR();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'
I kolejny przykład:
SELECT DAYOFYEAR('2030-01-25', '2045-05-08');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DAYOFYEAR'