sql >> Database >  >> RDS >> MariaDB

5 functies om het weeknummer van een datum in MariaDB te extraheren

Hieronder staan ​​5 functies waarmee u het weeknummer van een datum in MariaDB kunt retourneren. Vier keren alleen de week terug, en één keert zowel de week als het jaar gecombineerd terug.

De WEEK() Functie

De WEEK() functie retourneert de week voor een bepaalde datum.

Voorbeeld:

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

Resultaat:

+--------------------+
| WEEK('2023-07-25') |
+--------------------+
|                 30 |
+--------------------+

De WEEK() 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 WEEK() Werkt in MariaDB voor meer informatie over de modi en voorbeelden van elk.

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 de week (evenals andere eenheden) uit de datum te halen.

Voorbeeld:

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

Resultaat:

+---------------------------------+
| EXTRACT(WEEK FROM '2023-07-25') |
+---------------------------------+
|                              30 |
+---------------------------------+

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 de week (evenals elke andere eenheid) vanaf de datum terug te brengen. Er zijn verschillende opties om het weeknummer terug te geven, afhankelijk van op welke dag de week begint, enz.

Hier is een voorbeeld dat de week in verschillende vormen teruggeeft:

SELECT 
    DATE_FORMAT('2023-01-01', '%U') AS "%U",
    DATE_FORMAT('2023-01-01', '%u') AS "%u",
    DATE_FORMAT('2023-01-01', '%V') AS "%V",
    DATE_FORMAT('2023-01-01', '%v') AS "%v";

Resultaat:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 01   | 00   | 01   | 52   |
+------+------+------+------+

Hier is een beschrijving van elk van deze formaatspecificaties:

Formaatspecificatie Beschrijving
%U Weeknummer (00-53), wanneer de eerste dag van de week zondag is.
%u Weeknummer (00-53), wanneer de eerste dag van de week maandag is.
%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 .

En hier is een beschrijving van %X en %x zoals vermeld in de bovenstaande tabel:

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 .

We kunnen indien nodig formaatspecificaties combineren om het jaar en de week samen te retourneren:

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 |
+----------+----------+

Houd er rekening mee dat het weeknummer niet altijd de bovenstaande voorbeelden weerspiegelt - het hangt af van de werkelijke datum die wordt gebruikt.

Laten we de datum een ​​jaar vooruit schuiven:

SELECT 
    DATE_FORMAT('2024-01-01', '%U') AS "%U",
    DATE_FORMAT('2024-01-01', '%u') AS "%u",
    DATE_FORMAT('2024-01-01', '%V') AS "%V",
    DATE_FORMAT('2024-01-01', '%v') AS "%v";

Resultaat:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 00   | 01   | 53   | 01   |
+------+------+------+------+

Deze keer krijgen we een andere reeks resultaten.

Dit is wat er gebeurt als we het jaar ingaan:

SELECT 
    DATE_FORMAT('2024-12-12', '%U') AS "%U",
    DATE_FORMAT('2024-12-12', '%u') AS "%u",
    DATE_FORMAT('2024-12-12', '%V') AS "%V",
    DATE_FORMAT('2024-12-12', '%v') AS "%v";

Resultaat:

+------+------+------+------+
| %U   | %u   | %V   | %v   |
+------+------+------+------+
| 49   | 50   | 49   | 50   |
+------+------+------+------+

Zoals je kunt zien, is het retourneren van het weeknummer niet altijd zo duidelijk als we zouden willen.

Zie MariaDB Format Strings voor een volledige lijst van format strings/specificaties die kunnen worden gebruikt met DATE_FORMAT() .

De YEARWEEK() Functie

Het is mogelijk om de week en . te krijgen jaar in één keer. 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 |
+------------------------+

Net als bij de WEEK() functie, 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. HOUR() Voorbeelden – MySQL

  2. Opgeslagen procedure met Out-parameter oproepen met PDO

  3. ERD-notaties in gegevensmodellering

  4. Django:Tafel bestaat niet