Nedan finns 4 funktioner som gör att du kan returnera året från ett datum i MariaDB. Tre funktioner returnerar bara året, och en returnerar både år och vecka.
YEAR()
Funktion
YEAR()
funktion returnerar året för ett givet datum. Resultatet ligger i intervallet 1000
till 9999
eller 0
för datum som har ett år noll (som 0000-00-00
).
Exempel:
SELECT YEAR('2023-07-25');
Resultat:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
EXTRACT()
Funktion
funktionen låter dig extrahera en specificerad enhet från datumet. Därför kan du använda den för att extrahera årtalet (liksom andra enheter) från datumet.EXTRACT
()
Exempel:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Resultat:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen låter dig formatera ett datum baserat på en formatsträng. Formatsträngen anger hur datumet ska formateras.
Du kan därför använda denna funktion för att returnera årtalet (liksom vilken annan enhet som helst) från datumet. Det finns olika formatspecifikationer för att returnera årtalet i olika format. Till exempel ett fyrsiffrigt år, tvåsiffrigt år, etc.
Här är ett exempel som returnerar året i olika former:
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";
Resultat:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
Lägg märke till att %x
returnerade ett annat årtal än de andra.
Här är en beskrivning av var och en av dessa formatspecifikationer, som förklarar varför %x
returnerade ett annat resultat:
Formatspecifikation | Beskrivning |
---|---|
%X | Årtal med 4 siffror när första dagen i veckan är söndag. Används med %V . |
%x | Årtal med 4 siffror när första dagen i veckan är måndag. Används med %v . |
%Y | Årtal med 4 siffror. |
%y | Årtal med 2 siffror. |
Och här är en beskrivning av %V
och %v
enligt ovanstående tabell:
Formatspecifikation | Beskrivning |
---|---|
%V | Veckonummer (01-53), när första dagen i veckan är söndag. Används med %X . |
%v | Veckonummer (01-53), när första dagen i veckan är måndag. Används med %x . |
Så vi kan lägga till dessa formatspecifikationer till exemplet ovan och få följande:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Resultat:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Observera att %x
kommer inte alltid att returnera ett annat år – det beror på det faktiska datumet som används. Ibland är det %X
som ger ett annat år tillbaka än de andra.
Låt oss flytta fram datumet ett år:
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";
Resultat:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
Den här gången är det %X
det är det udda. Som förklaras i tabellen ovan beror det på om den första dagen i veckan är söndag eller måndag.
Naturligtvis, om vi går längre in på året, returnerar alla formatspecifikationer samma år:
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";
Resultat:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
Se MariaDB Format Strings för en fullständig lista över formatsträngar/specifikationer.
YEARWEEK()
Funktion
YEARWEEK()
funktion returnerar år och vecka för ett givet datum.
Exempel:
SELECT YEARWEEK('2023-01-01');
Resultat:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Årtalet i resultatet kan skilja sig från året i datumargumentet för årets första och sista vecka.
Så här händer om vi går framåt ett år:
SELECT YEARWEEK('2024-01-01');
Resultat:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
YEARWEEK()
funktion accepterar ett valfritt andra argument för att specificera läget. Det faktiska resultatet du får från denna funktion beror på vilket läge som används. Om modargumentet utelämnas, värdet för default_week_format
systemvariabel används.
Se hur YEARWEEK()
Fungerar i MariaDB för mer om lägen och exempel på var och en.