sql >> Databasteknik >  >> RDS >> Mysql

WEEK() Exempel – MySQL

I MySQL kan du använda WEEK() funktion för att få veckonummer för ett givet datum. Med "veckonummer" menar jag veckan på året.

För att använda funktionen, ange bara datumet som ett argument och veckonumret kommer att returneras.

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

Syntaxen ser ut så här:

WEEK(date[,mode])

Var:

  • date är det datum du vill ha veckonumret 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.

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

SELECT WEEK('2021-01-25') As 'Week Number';

Resultat:

+-------------+
| Week Number |
+-------------+
|           4 |
+-------------+

Här är ett exempel med ett datum nära slutet av året.

SELECT WEEK('2021-12-25') As 'Week Number';

Resultat:

+-------------+
| Week Number |
+-------------+
|          51 |
+-------------+

Exempel 2 – Ange ett läge

Om du inte anger ett andra argument, WEEK() funktionen använder läget som specificerats av default_week_format systemvariabel. Standardvärdet för denna variabel är 0 .

Men du har också möjlighet att ange ett andra argument för att specificera vilket läge som ska användas. Exempel:

SELECT WEEK('2019-10-17', 7) AS 'Mode 7';

Resultat:

+--------+
| Mode 7 |
+--------+
|     41 |
+--------+

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

För lägesvärden där vecka 1 är den första veckan "med 4 eller fler dagar i år", är veckorna numrerade enligt ISO 8601:1988:

  • Om veckan som innehåller 1 januari har 4 eller fler dagar på det nya året är det vecka 1.
  • Annars är det sista veckan föregående år, och nästa vecka är vecka 1.

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 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      0 |      1 |     52 |      1 |      1 |      0 |      1 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 2

SET @date = '2019-01-06';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      1 |      1 |      1 |      2 |      0 |      2 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 3

SET @date = '2019-01-07';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Resultat:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      2 |      1 |      2 |      2 |      1 |      2 |      1 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. Databasdesign:Beräknar kontosaldot

  2. Skapa en postgresql DB med psycopg2

  3. Hur använder man SqlCommand för att SKAPA DATABAS med parametrerat db-namn?

  4. brew installera mysql på macOS