I MySQL, YEARWEEK()
funktion returnerar år och vecka för ett givet datum. Du anger datumet som ett argument, och funktionen kommer att returnera resultatet därefter.
Du har också möjlighet att ange om veckan ska börja på söndag eller måndag, och om veckan ska vara i intervallet 0 till 53 eller 1 till 53.
Syntax
Du kan använda någon av följande två former:
YEARWEEK(date) YEARWEEK(date,mode)
Var:
date
är det datum du vill ha år och veckonummer tillbaka från.mode
är ett tal som anger om veckan ska börja på söndag eller måndag och om veckan ska vara i intervallet 0 till 53 eller 1 till 53. Se tabellen nedan för möjliga lägesvärden.
Om inget läge anges är läget 0
.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT YEARWEEK('2021-01-25') As 'Result';
Resultat:
+--------+ | Result | +--------+ | 202104 | +--------+
Här är ett exempel med ett annat datum.
SELECT YEARWEEK('1999-12-25') As 'Result';
Resultat:
+--------+ | Result | +--------+ | 199951 | +--------+
Exempel 2 – Ange ett läge
Om du inte anger ett andra argument, YEARWEEK()
funktionen använder 0
som läget.
Men du har också möjlighet att ange ett andra argument för att specificera vilket läge som ska användas. Exempel:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Resultat:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
De möjliga lägesvärdena är följande.
Läge | Veckans första dag | Räckvidd | Vecka 1 är den första veckan … |
---|---|---|---|
0 | Söndag | 0-53 | med en söndag i år |
1 | måndag | 0-53 | med 4 eller fler dagar i år |
2 | Söndag | 1-53 | med en söndag i år |
3 | måndag | 1-53 | med 4 eller fler dagar i år |
4 | Söndag | 0-53 | med 4 eller fler dagar i år |
5 | måndag | 0-53 | med en måndag i år |
6 | Söndag | 1-53 | med 4 eller fler dagar i år |
7 | måndag | 1-53 | med en måndag i år |
Dessa är samma värden som kan användas med WEEK()
funktion.
En skillnad mellan dessa två funktioner är att WEEK()
funktion härleder sitt standardläge från default_week_format
systemvariabel (standardvärdet för denna variabel är 0
). YEARWEEK()
å andra sidan, ignorerar den här inställningen och använder 0
som standardvärde (oavsett default_week_format
inställning).
Exempel 3 – Jämförelse av lägen
Här är en snabb jämförelse av hur du kan få olika resultat beroende på vilket läge som används.
Följande tre exempel använder samma kod, men med tre olika datum. Dessa datum är på varandra följande – de inträffar den 5:e, 6:e och 7:e januari. Som du kan se kan resultaten vara ganska olika beroende på exakt datum och vilket läge som används.
Datum 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 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 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 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 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 | +--------+--------+--------+--------+--------+--------+--------+--------+