Nedenfor er 4 funktioner, der gør dig i stand til at returnere året fra en dato i MariaDB. Tre funktioner returnerer kun året, og én returnerer både år og uge.
YEAR()
Funktion
YEAR()
funktion returnerer året for en given dato. Resultatet er i området 1000
til 9999
eller 0
for datoer, der har et år nul (såsom 0000-00-00
).
Eksempel:
SELECT YEAR('2023-07-25');
Resultat:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
EXTRACT()
Funktion
funktionen giver dig mulighed for at udtrække en specificeret enhed fra datoen. Derfor kan du bruge det til at udtrække året (samt andre enheder) fra datoen.EXTRACT
()
Eksempel:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Resultat:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen giver dig mulighed for at formatere en dato baseret på en formatstreng. Formatstrengen angiver, hvordan datoen skal formateres.
Du kan derfor bruge denne funktion til at returnere året (samt enhver anden enhed) fra datoen. Der er forskellige formatspecifikationer til at returnere året i forskellige formater. For eksempel et firecifret år, tocifret år osv.
Her er et eksempel, der returnerer året i forskellige 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 | +------+------+------+------+
Bemærk, at %x
returnerede et andet årstal end de andre.
Her er en beskrivelse af hver af disse formatspecifikationer, som forklarer hvorfor %x
returnerede et andet resultat:
Formatspecifikation | Beskrivelse |
---|---|
%X | Årtal med 4 cifre, når den første dag i ugen er søndag. Brugt med %V . |
%x | Årtal med 4 cifre, når den første dag i ugen er mandag. Brugt med %v . |
%Y | Årtal med 4 cifre. |
%y | Årtal med 2 cifre. |
Og her er en beskrivelse af %V
og %v
som nævnt i ovenstående tabel:
Formatspecifikation | Beskrivelse |
---|---|
%V | Ugenummer (01-53), når den første dag i ugen er søndag. Brugt med %X . |
%v | Ugenummer (01-53), når den første dag i ugen er mandag. Brugt med %x . |
Så vi kunne tilføje disse formatspecifikationer til ovenstående eksempel og få følgende:
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 | +----------+----------+
Bemærk, at %x
vil ikke altid returnere et andet år - det afhænger af den faktiske dato, der bruges. Nogle gange er det %X
der giver et andet år tilbage til de andre.
Lad os rykke datoen et år frem:
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 | +------+------+------+------+
Denne gang er det %X
det er det mærkelige. Som forklaret i ovenstående tabel afhænger det af, om den første dag i ugen er søndag eller mandag.
Selvfølgelig, hvis vi bevæger os længere ind i året, returnerer alle formatspecifikationer det samme å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 for en komplet liste over formatstrenge/specifikationer.
YEARWEEK()
Funktion
YEARWEEK()
funktion returnerer året og ugen for en given dato.
Eksempel:
SELECT YEARWEEK('2023-01-01');
Resultat:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Året i resultatet kan være forskelligt fra året i datoargumentet for årets første og sidste uge.
Her er, hvad der sker, hvis vi går et år frem:
SELECT YEARWEEK('2024-01-01');
Resultat:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
YEARWEEK()
funktion accepterer et valgfrit andet argument for at angive tilstanden. Det faktiske resultat, du får fra denne funktion, afhænger af den anvendte tilstand. Hvis tilstandsargumentet udelades, værdien af default_week_format
systemvariabel bruges.
Se hvordan YEARWEEK()
Fungerer i MariaDB for mere om tilstande og eksempler på hver.