sql >> Databasteknik >  >> RDS >> MariaDB

4 funktioner för att återställa året från ett datum i MariaDB

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

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

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.


  1. Användning av MySQL:s IF FINNS

  2. Lagra JSON i databasen kontra att ha en ny kolumn för varje nyckel

  3. Använda Jenkins med Kubernetes AWS, del 3

  4. MySQL:Felkod:1118 Radstorleken är för stor (> 8126). Ändra vissa kolumner till TEXT eller BLOB