По-долу са 4 функции, които ви позволяват да върнете годината от дата в MariaDB. Три функции връщат само годината, а една връща и годината, и седмицата.
YEAR()
Функция
YEAR()
функцията връща годината за дадена дата. Резултатът е в диапазона 1000
до 9999
или 0
за дати с нулева година (като 0000-00-00
).
Пример:
SELECT YEAR('2023-07-25');
Резултат:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
EXTRACT()
Функция
функцията ви позволява да извлечете определена единица от датата. Следователно можете да го използвате, за да извлечете годината (както и други единици) от датата.EXTRACT
()
Пример:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Резултат:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT()
Функция
DATE_FORMAT()
функцията ви позволява да форматирате дата въз основа на низ за форматиране. Форматният низ указва как трябва да бъде форматирана датата.
Следователно можете да използвате тази функция, за да върнете годината (както и всяка друга единица) от датата. Има различни спецификатори на формат за връщане на годината в различни формати. Например четирицифрена година, двуцифрена година и т.н.
Ето пример, който връща годината в различни форми:
SELECT
DATE_FORMAT('2023-01-01', '%X') AS "%X",
DATE_FORMAT('2023-01-01', '%x') AS "%x",
DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
DATE_FORMAT('2023-01-01', '%y') AS "%y";
Резултат:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
Забележете, че %x
върна номер на година, различен от останалите.
Ето описание на всеки от тези спецификатори на формат, което обяснява защо %x
върна различен резултат:
Определител на формата | Описание |
---|---|
%X | Година с 4 цифри, когато първият ден от седмицата е неделя. Използва се с %V . |
%x | Година с 4 цифри, когато първият ден от седмицата е понеделник. Използва се с %v . |
%Y | Година с 4 цифри. |
%y | Година с 2 цифри. |
И ето описание на %V
и %v
както е посочено в горната таблица:
Определител на формата | Описание |
---|---|
%V | Номер на седмицата (01-53), когато първият ден от седмицата е неделя. Използва се с %X . |
%v | Номер на седмицата (01-53), когато първият ден от седмицата е понеделник. Използва се с %x . |
Така че можем да добавим тези спецификатори на формат към горния пример и да получим следното:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Резултат:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Имайте предвид, че %x
не винаги ще връща различна година - зависи от действителната използвана дата. Понякога е %X
което връща различна година на останалите.
Нека преместим датата с една година напред:
SELECT
DATE_FORMAT('2024-01-01', '%X') AS "%X",
DATE_FORMAT('2024-01-01', '%x') AS "%x",
DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
DATE_FORMAT('2024-01-01', '%y') AS "%y";
Резултат:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
Този път е %X
това е странното. Както е обяснено в таблицата по-горе, зависи от това дали първият ден от седмицата е неделя или понеделник.
Разбира се, ако преминем по-нататък в годината, всички спецификатори на формат връщат една и съща година:
SELECT
DATE_FORMAT('2024-12-12', '%X') AS "%X",
DATE_FORMAT('2024-12-12', '%x') AS "%x",
DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
DATE_FORMAT('2024-12-12', '%y') AS "%y";
Резултат:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
Вижте MariaDB Format Strings за пълен списък с низове/спецификатори на формат.
YEARWEEK()
Функция
YEARWEEK()
функцията връща годината и седмицата за дадена дата.
Пример:
SELECT YEARWEEK('2023-01-01');
Резултат:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Годината в резултата може да е различна от годината в аргумента за дата за първата и последната седмица от годината.
Ето какво се случва, ако продължим с една година напред:
SELECT YEARWEEK('2024-01-01');
Резултат:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
YEARWEEK()
функцията приема незадължителен втори аргумент, за да посочи режима. Действителният резултат, който получавате от тази функция, ще зависи от използвания режим. Ако аргументът mode е пропуснат, стойността на default_week_format
се използва системна променлива.
Вижте как YEARWEEK()
Работи в MariaDB за повече информация относно режимите и примерите за всеки.