sql >> Database teknologi >  >> RDS >> Mysql

YEARWEEK() Eksempler – MySQL

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

  1. Kan en Check-begrænsning relatere til en anden tabel?

  2. Er der en måde at bruge ARRAYs i Entity Framework + PostgreSql

  3. 3 måder at erstatte NULL med "N/A" i SQLite

  4. Hvad er forskellen mellem 'ÅÅÅÅ' og 'RRRR' i Oracle SQL