Nedenfor er 5 funktioner, der gør dig i stand til at returnere ugenummeret fra en dato i MariaDB. Fire returnerer kun ugen, og én returnerer både ugen og året tilsammen.
WEEK()
Funktion
WEEK()
funktion returnerer ugen for en given dato.
Eksempel:
SELECT WEEK('2023-07-25');
Resultat:
+--------------------+ | WEEK('2023-07-25') | +--------------------+ | 30 | +--------------------+
WEEK()
funktion accepterer et valgfrit andet argument for at angive tilstanden. Det faktiske resultat, du får fra denne funktion, afhænger af den anvendte tilstand. Hvis tilstandsargumentet udelades, værdien af default_week_format
systemvariabel bruges.
Se hvordan WEEK()
Fungerer i MariaDB for mere om tilstande og eksempler på hver.
EXTRACT()
Funktion
funktionen giver dig mulighed for at udtrække en specificeret enhed fra datoen. Derfor kan du bruge den til at udtrække ugen (såvel som andre enheder) fra datoen.EXTRACT
()
Eksempel:
SELECT EXTRACT(WEEK FROM '2023-07-25');
Resultat:
+---------------------------------+ | EXTRACT(WEEK FROM '2023-07-25') | +---------------------------------+ | 30 | +---------------------------------+
DATE_FORMAT()
Funktion
DATE_FORMAT()
funktionen giver dig mulighed for at formatere en dato baseret på en formatstreng. Formatstrengen angiver, hvordan datoen skal formateres.
Du kan derfor bruge denne funktion til at returnere ugen (såvel som enhver anden enhed) fra datoen. Der er forskellige muligheder for at returnere ugenummeret, alt efter hvilken dag ugen starter osv.
Her er et eksempel, der returnerer ugen i forskellige former:
SELECT
DATE_FORMAT('2023-01-01', '%U') AS "%U",
DATE_FORMAT('2023-01-01', '%u') AS "%u",
DATE_FORMAT('2023-01-01', '%V') AS "%V",
DATE_FORMAT('2023-01-01', '%v') AS "%v";
Resultat:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 01 | 00 | 01 | 52 | +------+------+------+------+
Her er en beskrivelse af hver af disse formatspecifikationer:
Formatspecifikation | Beskrivelse |
---|---|
%U | Ugenummer (00-53), når den første dag i ugen er søndag. |
%u | Ugenummer (00-53), når den første dag i ugen er mandag. |
%V | Ugenummer (01-53), når den første dag i ugen er søndag. Brugt med %X . |
%v | Ugenummer (01-53), når den første dag i ugen er mandag. Brugt med %x . |
Og her er en beskrivelse af %X
og %x
som nævnt i ovenstående tabel:
Formatspecifikation | Beskrivelse |
---|---|
%X | Årtal med 4 cifre, når den første dag i ugen er søndag. Brugt med %V . |
%x | Årtal med 4 cifre, når den første dag i ugen er mandag. Brugt med %v . |
Vi kan kombinere formatspecifikationer for at returnere år og uge sammen, hvis det kræves:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Resultat:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Bemærk, at ugenummeret ikke altid afspejler ovenstående eksempler - det afhænger af den faktiske dato, der bruges.
Lad os rykke datoen et år frem:
SELECT
DATE_FORMAT('2024-01-01', '%U') AS "%U",
DATE_FORMAT('2024-01-01', '%u') AS "%u",
DATE_FORMAT('2024-01-01', '%V') AS "%V",
DATE_FORMAT('2024-01-01', '%v') AS "%v";
Resultat:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 00 | 01 | 53 | 01 | +------+------+------+------+
Denne gang får vi et andet sæt resultater.
Her er, hvad der sker, når vi går videre ind i året:
SELECT
DATE_FORMAT('2024-12-12', '%U') AS "%U",
DATE_FORMAT('2024-12-12', '%u') AS "%u",
DATE_FORMAT('2024-12-12', '%V') AS "%V",
DATE_FORMAT('2024-12-12', '%v') AS "%v";
Resultat:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 49 | 50 | 49 | 50 | +------+------+------+------+
Som du kan se, er det ikke altid så tydeligt at returnere ugenummeret, som vi kunne ønske os.
Se MariaDB Format Strings for en komplet liste over formatstrenge/specifikationer, der kan bruges med DATE_FORMAT()
.
YEARWEEK()
Funktion
Det er muligt at få ugen og år på én gang. YEARWEEK()
funktion returnerer året og ugen for en given dato.
Eksempel:
SELECT YEARWEEK('2023-01-01');
Resultat:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Året i resultatet kan være forskelligt fra året i datoargumentet for årets første og sidste uge.
Her er, hvad der sker, hvis vi går et år frem:
SELECT YEARWEEK('2024-01-01');
Resultat:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
Som med WEEK()
funktion, YEARWEEK()
funktion accepterer et valgfrit andet argument for at angive tilstanden. Det faktiske resultat, du får fra denne funktion, afhænger af den anvendte tilstand. Hvis tilstandsargumentet udelades, værdien af default_week_format
systemvariabel bruges.
Se hvordan YEARWEEK()
Fungerer i MariaDB for mere om tilstande og eksempler på hver.