W MariaDB, WEEKOFYEAR()
to wbudowana funkcja daty i czasu, która zwraca tydzień kalendarzowy podanej daty jako liczbę z zakresu od 1
do 53
.
Jest to odpowiednik użycia WEEK()
działa w trybie 3, a zatem jego wynik jest zgodny z normą ISO 8601:1988.
Przyjmuje jeden argument; data, z której chcesz wyodrębnić tydzień.
Składnia
Składnia wygląda tak:
WEEKOFYEAR(date)
Gdzie date
jest wyrażeniem daty, z którego ma pochodzić tydzień kalendarzowy.
Przykład
Oto przykład:
SELECT WEEKOFYEAR('2030-01-01');
Wynik:
+--------------------------+ | WEEKOFYEAR('2030-01-01') | +--------------------------+ | 1 | +--------------------------+
Jest to równoznaczne z wykonaniem następujących czynności:
SELECT WEEK('2030-01-01', 3);
Wynik:
+-----------------------+ | WEEK('2030-01-01', 3) | +-----------------------+ | 1 | +-----------------------+
Wartości daty i godziny
WEEKOFYEAR()
funkcja działa również z wartościami daty/godziny:
SELECT WEEKOFYEAR('2030-08-01 10:30:45');
Wynik:
+-----------------------------------+ | WEEKOFYEAR('2030-08-01 10:30:45') | +-----------------------------------+ | 31 | +-----------------------------------+
Daty numeryczne
Możliwe jest również przekazywanie dat jako liczby, o ile ma to sens jako data.
Przykład
SELECT WEEKOFYEAR(20301125);
Wynik:
+----------------------+ | WEEKOFYEAR(20301125) | +----------------------+ | 48 | +----------------------+
Lub nawet następujący (który używa dwucyfrowego roku):
SELECT WEEKOFYEAR(301125);
Wynik:
+--------------------+ | WEEKOFYEAR(301125) | +--------------------+ | 48 | +--------------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:
SELECT WEEKOFYEAR(20301135);
Wynik:
+----------------------+ | WEEKOFYEAR(20301135) | +----------------------+ | NULL | +----------------------+ 1 row in set, 1 warning (0.000 sec)
Zwrócił null
z ostrzeżeniem.
Spójrzmy na ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
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
WEEKOFYEAR('2030/06/25'),
WEEKOFYEAR('2030,06,25'),
WEEKOFYEAR('2030:06:25'),
WEEKOFYEAR('2030;06!25');
Wynik (przy użyciu wyjścia pionowego):
WEEKOFYEAR('2030/06/25'): 26 WEEKOFYEAR('2030,06,25'): 26 WEEKOFYEAR('2030:06:25'): 26 WEEKOFYEAR('2030;06!25'): 26
Aktualna data
Możemy przekazać NOW()
jako argument datetime, aby użyć bieżącej daty:
SELECT
NOW(),
WEEKOFYEAR(NOW());
Wynik:
+---------------------+-------------------+ | NOW() | WEEKOFYEAR(NOW()) | +---------------------+-------------------+ | 2021-05-17 09:42:13 | 20 | +---------------------+-------------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu WEEKOFYEAR()
zwraca null
:
SELECT WEEKOFYEAR('2030-65-78');
Wynik:
+--------------------------+ | WEEKOFYEAR('2030-65-78') | +--------------------------+ | NULL | +--------------------------+ 1 row in set, 1 warning (0.000 sec)
Pokażmy ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Brakujący argument
Wywołanie WEEKOFYEAR()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT WEEKOFYEAR();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'
I kolejny przykład:
SELECT WEEKOFYEAR('2030-12-10', 1);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'WEEKOFYEAR'