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

5 funktioner til at udtrække ugenummeret fra en dato i MariaDB

Nedenfor er 5 funktioner, der gør dig i stand til at returnere ugenummeret fra en dato i MariaDB. Fire returnerer kun ugen, og én returnerer både ugen og året tilsammen.

WEEK() Funktion

WEEK() funktion returnerer ugen for en given dato.

Eksempel:

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

Resultat:

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

WEEK() 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 WEEK() Fungerer i MariaDB for mere om tilstande og eksempler på hver.

EXTRACT() Funktion

EXTRACT () funktionen giver dig mulighed for at udtrække en specificeret enhed fra datoen. Derfor kan du bruge den til at udtrække ugen (såvel som andre enheder) fra datoen.

Eksempel:

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

Resultat:

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

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 ugen (såvel som enhver anden enhed) fra datoen. Der er forskellige muligheder for at returnere ugenummeret, alt efter hvilken dag ugen starter osv.

Her er et eksempel, der returnerer ugen i forskellige former:

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

Resultat:

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

Her er en beskrivelse af hver af disse formatspecifikationer:

Formatspecifikation Beskrivelse
%U Ugenummer (00-53), når den første dag i ugen er søndag.
%u Ugenummer (00-53), når den første dag i ugen er mandag.
%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 .

Og her er en beskrivelse af %X og %x som nævnt i ovenstående tabel:

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 .

Vi kan kombinere formatspecifikationer for at returnere år og uge sammen, hvis det kræves:

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 ugenummeret ikke altid afspejler ovenstående eksempler - det afhænger af den faktiske dato, der bruges.

Lad os rykke datoen et år frem:

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

Resultat:

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

Denne gang får vi et andet sæt resultater.

Her er, hvad der sker, når vi går videre ind i året:

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

Resultat:

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

Som du kan se, er det ikke altid så tydeligt at returnere ugenummeret, som vi kunne ønske os.

Se MariaDB Format Strings for en komplet liste over formatstrenge/specifikationer, der kan bruges med DATE_FORMAT() .

YEARWEEK() Funktion

Det er muligt at få ugen og år på én gang. 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 |
+------------------------+

Som med WEEK() funktion, 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. 5 fordele at nyde, når du opgraderer din database

  2. Forskellen mellem LockModeType Jpa

  3. Send e-mails med vedhæftede filer i SQL Server (T-SQL)

  4. Bruger AT TIME ZONE til at rette en gammel rapport