sql >> Database >  >> RDS >> MariaDB

4 functies om het jaar terug te geven vanaf een datum in MariaDB

Hieronder staan ​​4 functies waarmee u het jaar kunt retourneren vanaf een datum in MariaDB. Drie functies geven alleen het jaar terug en één geeft zowel het jaar als de week terug.

Het YEAR() Functie

Het YEAR() functie retourneert het jaar voor een bepaalde datum. Het resultaat ligt in het bereik 1000 tot 9999 , of 0 voor datums met een jaartal nul (zoals 0000-00-00 ).

Voorbeeld:

SELECT YEAR('2023-07-25');

Resultaat:

+--------------------+
| YEAR('2023-07-25') |
+--------------------+
|               2023 |
+--------------------+

De EXTRACT() Functie

De EXTRACT () functie stelt u in staat om een ​​gespecificeerde eenheid uit de datum te halen. Daarom kun je het gebruiken om het jaar (evenals andere eenheden) uit de datum te halen.

Voorbeeld:

SELECT EXTRACT(YEAR FROM '2023-07-25');

Resultaat:

+---------------------------------+
| EXTRACT(YEAR FROM '2023-07-25') |
+---------------------------------+
|                            2023 |
+---------------------------------+

De DATE_FORMAT() Functie

De DATE_FORMAT() Met deze functie kunt u een datum opmaken op basis van een opmaakreeks. De format string geeft aan hoe de datum moet worden opgemaakt.

U kunt deze functie daarom gebruiken om het jaar (evenals elke andere eenheid) vanaf de datum terug te geven. Er zijn verschillende formaatspecificaties voor het retourneren van het jaar in verschillende formaten. Bijvoorbeeld een jaartal van vier cijfers, jaartal van twee cijfers, enz.

Hier is een voorbeeld dat het jaar in verschillende vormen teruggeeft:

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";

Resultaat:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2022 | 2023 | 23   |
+------+------+------+------+

Merk op dat %x een ander jaarnummer geretourneerd dan de andere.

Hier is een beschrijving van elk van die formaatspecificaties, wat verklaart waarom %x een ander resultaat geretourneerd:

Formaatspecificatie Beschrijving
%X Jaar met 4 cijfers wanneer de eerste dag van de week zondag is. Gebruikt met %V .
%x Jaar met 4 cijfers wanneer de eerste dag van de week maandag is. Gebruikt met %v .
%Y Jaar met 4 cijfers.
%y Jaar met 2 cijfers.

En hier is een beschrijving van %V en %v zoals vermeld in de bovenstaande tabel:

Formaatspecificatie Beschrijving
%V Weeknummer (01-53), wanneer de eerste dag van de week zondag is. Gebruikt met %X .
%v Weeknummer (01-53), wanneer de eerste dag van de week maandag is. Gebruikt met %x .

We zouden die formaatspecificaties dus aan het bovenstaande voorbeeld kunnen toevoegen en het volgende krijgen:

SELECT 
    DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
    DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";

Resultaat:

+----------+----------+
| %X, %V   | %x, %v   |
+----------+----------+
| 2023, 01 | 2022, 52 |
+----------+----------+

Merk op dat %x zal niet altijd een ander jaar terugkeren - het hangt af van de werkelijke datum die wordt gebruikt. Soms is het %X dat geeft een ander jaar terug aan de anderen.

Laten we de datum een ​​jaar vooruit schuiven:

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";

Resultaat:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2023 | 2024 | 2024 | 24   |
+------+------+------+------+

Deze keer is het %X dat is de vreemde eend in de bijt. Zoals uitgelegd in de bovenstaande tabel, hangt het ervan af of de eerste dag van de week zondag of maandag is.

Als we verder in het jaar gaan, keren alle formaatspecificaties natuurlijk hetzelfde jaar terug:

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";

Resultaat:

+------+------+------+------+
| %X   | %x   | %Y   | %y   |
+------+------+------+------+
| 2024 | 2024 | 2024 | 24   |
+------+------+------+------+

Zie MariaDB Format Strings voor een volledige lijst met format strings/specificaties.

De YEARWEEK() Functie

De YEARWEEK() functie retourneert het jaar en de week voor een bepaalde datum.

Voorbeeld:

SELECT YEARWEEK('2023-01-01');

Resultaat:

+------------------------+
| YEARWEEK('2023-01-01') |
+------------------------+
|                 202301 |
+------------------------+

Het jaar in het resultaat kan verschillen van het jaar in het datumargument voor de eerste en de laatste week van het jaar.

Dit is wat er gebeurt als we een jaar vooruit gaan:

SELECT YEARWEEK('2024-01-01');

Resultaat:

+------------------------+
| YEARWEEK('2024-01-01') |
+------------------------+
|                 202353 |
+------------------------+

De YEARWEEK() functie accepteert een optioneel tweede argument om de modus op te geven. Het werkelijke resultaat dat u met deze functie krijgt, hangt af van de modus die wordt gebruikt. Als het mode-argument wordt weggelaten, wordt de waarde van het default_week_format systeemvariabele wordt gebruikt.

Zie hoe YEARWEEK() Werkt in MariaDB voor meer informatie over de modi en voorbeelden van elk.


  1. De beste manier om een ​​audit trail in SQL Server te implementeren?

  2. Ingesloten Postgres voor lente-opstarttests

  3. Percona-distributie voor PostgreSQL implementeren voor hoge beschikbaarheid

  4. Oracle hoe een query naar een tekst/csv-bestand te exporteren