sql >> Database teknologi >  >> RDS >> MariaDB

4 funktioner til at returnere året fra en dato i MariaDB

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

EXTRACT () 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.

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.


  1. konverter MySQL SET datatype til Postgres

  2. Hvordan øger man MySQL-forbindelser (max_connections)?

  3. Sådan opretter du udenlandsk nøglebegrænsning med ON SLET CASCADE i SQL Server - SQL Server / TSQL vejledning del 80

  4. Konvertering fra asynkron til synkron replikering i PostgreSQL