W MariaDB, YEAR() to wbudowana funkcja daty i czasu, która zwraca rok z podanego wyrażenia daty.
Przyjmuje jeden argument, czyli datę, z której chcesz wyodrębnić rok.
Zwraca rok jako liczbę z zakresu 1000 do 9999 . Dla dat zerowych (np. 0000-00-00 ), wynikiem jest 0 .
Składnia
Składnia wygląda tak:
YEAR(date)
Gdzie date jest wyrażeniem daty, z którego pochodzi rok.
Przykład
Oto przykład:
SELECT YEAR('2030-08-01'); Wynik:
+--------------------+
| YEAR('2030-08-01') |
+--------------------+
| 2030 |
+--------------------+ Wartości daty i godziny
Działa również z wartościami daty i godziny:
SELECT YEAR('2030-08-01 10:30:45'); Wynik:
+-----------------------------+
| YEAR('2030-08-01 10:30:45') |
+-----------------------------+
| 2030 |
+-----------------------------+ Zero dat
Zero dat daje w wyniku 0 .
Przykład:
SELECT YEAR('0000-00-00'); Wynik:
+--------------------+
| YEAR('0000-00-00') |
+--------------------+
| 0 |
+--------------------+ Daty numeryczne
Możliwe jest również przekazywanie dat jako liczby, o ile ma to sens jako data.
Przykład
SELECT YEAR(20301125); Wynik:
+----------------+ | YEAR(20301125) | +----------------+ | 2030 | +----------------+
Lub nawet następujący (który używa dwucyfrowego roku):
SELECT YEAR(301125); Wynik:
+--------------+ | YEAR(301125) | +--------------+ | 2030 | +--------------+
Ale to musi mieć sens jako randka. Oto, co się stanie, jeśli zwiększę część dnia do nieprawidłowego dnia:
SELECT YEAR(20301135); Wynik:
+----------------+ | YEAR(20301135) | +----------------+ | NULL | +----------------+ 1 row in set, 1 warning (0.000 sec)
Możemy sprawdzić ostrzeżenie w następujący sposób:
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
YEAR('2030/06/25'),
YEAR('2030,06,25'),
YEAR('2030:06:25'),
YEAR('2030;06!25'); Wynik (przy użyciu wyjścia pionowego):
YEAR('2030/06/25'): 2030
YEAR('2030,06,25'): 2030
YEAR('2030:06:25'): 2030
YEAR('2030;06!25'): 2030 Aktualna data
Możemy przekazać NOW() jako argument datetime, aby użyć bieżącej daty:
SELECT
NOW(),
YEAR(NOW()); Wynik:
+---------------------+-------------+ | NOW() | YEAR(NOW()) | +---------------------+-------------+ | 2021-05-18 08:55:02 | 2021 | +---------------------+-------------+
Nieprawidłowe argumenty
Po przekazaniu nieprawidłowego argumentu YEAR() zwraca null :
SELECT YEAR('2030-65-78'); Wynik:
+--------------------+
| YEAR('2030-65-78') |
+--------------------+
| NULL |
+--------------------+
1 row in set, 1 warning (0.001 sec) Sprawdź ostrzeżenie:
SHOW WARNINGS; Wynik:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
Brakujący argument
Wywołanie YEAR() z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT YEAR(); Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
I kolejny przykład:
SELECT YEAR('2030-12-10', '2031-12-10'); Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '2031-12-10')' at line 1