I MySQL er YEARWEEK()
funktion returnerer året og ugen for en given dato. Du angiver datoen som et argument, og funktionen vil returnere resultatet tilsvarende.
Du har også mulighed for at angive, om ugen skal starte søndag eller mandag, og om ugen skal være i intervallet 0 til 53 eller 1 til 53.
Syntaks
Du kan bruge en af følgende to former:
YEARWEEK(date) YEARWEEK(date,mode)
Hvor:
date
er den dato, du vil have årstal og ugenummer returneret fra.mode
er et tal, der angiver, om ugen skal starte søndag eller mandag, og om ugen skal være i intervallet 0 til 53 eller 1 til 53. Se tabellen nedenfor for de mulige tilstandsværdier.
Hvis ingen tilstand er angivet, er tilstanden 0
.
Eksempel 1 – Grundlæggende brug
Her er et eksempel til at demonstrere.
SELECT YEARWEEK('2021-01-25') As 'Result';
Resultat:
+--------+ | Result | +--------+ | 202104 | +--------+
Her er et eksempel med en anden dato.
SELECT YEARWEEK('1999-12-25') As 'Result';
Resultat:
+--------+ | Result | +--------+ | 199951 | +--------+
Eksempel 2 – Angiv en tilstand
Hvis du ikke angiver et andet argument, er YEARWEEK()
funktion bruger 0
som tilstanden.
Du har dog også mulighed for at angive et andet argument for at angive, hvilken tilstand der skal bruges. Eksempel:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Resultat:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
De mulige tilstandsværdier er som følger.
Tilstand | Første dag i ugen | Rækkevidde | Uge 1 er den første uge … |
---|---|---|---|
0 | søndag | 0-53 | med en søndag i år |
1 | mandag | 0-53 | med 4 eller flere dage i år |
2 | søndag | 1-53 | med en søndag i år |
3 | mandag | 1-53 | med 4 eller flere dage i år |
4 | søndag | 0-53 | med 4 eller flere dage i år |
5 | mandag | 0-53 | med en mandag i år |
6 | søndag | 1-53 | med 4 eller flere dage i år |
7 | mandag | 1-53 | med en mandag i år |
Dette er de samme værdier, som kan bruges med WEEK()
funktion.
En forskel mellem disse to funktioner er, at WEEK()
funktion henter sin standardtilstand fra default_week_format
systemvariabel (standardværdien for denne variabel er 0
). YEARWEEK()
på den anden side ignorerer denne indstilling og bruger 0
som standardværdi (uanset default_week_format
). indstilling).
Eksempel 3 – Sammenligning af tilstande
Her er en hurtig sammenligning af, hvordan du kan få forskellige resultater afhængigt af den anvendte tilstand.
De følgende tre eksempler bruger den samme kode, men med tre forskellige datoer. Disse datoer er fortløbende – de finder sted den 5., 6. og 7. januar. Som du kan se, kan resultaterne være ret forskellige afhængigt af den nøjagtige dato og den anvendte tilstand.
Dato 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Dato 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Dato 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Resultat:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+