sql >> Databasteknik >  >> RDS >> Mysql

YEARWEEK() Exempel – MySQL

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

  1. Min MySQL-databas är skadad... Vad gör jag nu?

  2. 2 sätt att lägga till ett procenttecken till ett tal i SQLite

  3. Varför Oracle-skärmar??? för specialtecken som åäö

  4. Skapa en tillfällig tabell i SQLite