3.1 Liste over funktioner til at arbejde med dato og klokkeslæt
Dato og klokkeslæt er en af de mest almindelige typer data gemt i databaser. Derfor er listen over funktioner til at arbejde med dem meget stor. Her er de mest populære:
# | Fungere | Beskrivelse |
---|---|---|
1 | CURDATE() | Returnerer den aktuelle dato |
2 | CURTIME() | Returnerer det aktuelle tidspunkt |
3 | NU(), LOKALTID() | Returnerer den aktuelle dato og det aktuelle klokkeslæt |
4 | ÅR() | Returnerer år fra dato |
5 | MÅNED() | Returnerer måneden fra en dato |
6 | DAY(), DAYOFMONTH() | Returnerer dagen fra en dato |
7 | TIME() | Returnerer kun timer fra tidspunktet |
8 | MINUT() | Meddeler minutter fra tidspunkt |
9 | ANDEN() | Returnerer sekunder fra tid |
10 | DAYNAME() | Returnerer navnet på ugedagen: mandag, ... |
elleve | MONTHNAME() | Returnerer månedens navn: januar, ... |
12 | UGE() | Returnerer ugen fra en dato |
13 | UGEDAG() | Returnerer nummeret på ugedagen: mandag - 0, tirsdag - 1 |
14 | UGEÅR() | Returnerer årets ugenummer |
15 | UGEDAG() | Returnerer nummeret på ugedagen: søndag - 1, mandag - 2 |
16 | DAGÅR() | Returnerer årets dag: 1-366 |
17 | DATO() | Returnerer kun datoen fra et "datetime"-objekt |
18 | ADDDATE() | Tilføjer dage til en dato |
19 | SUBDATE() | Trækker dage fra en dato |
20 | TILFØJSTID() | Tilføjer tid til anden |
21 | SUBTIME() | Trækker tid fra tid |
Jeg grupperede bevidst funktionerne i små grupper for at gøre det lettere at forstå, hvordan man arbejder med dem. Nedenfor vil vi overveje en funktion fra hver gruppe.
Du kan finde en komplet liste over funktioner til at arbejde med dato og tid på linket: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Opkaldsfunktioner
Forresten, da vi lærer så mange funktioner, tror jeg, det er nyttigt at nævne, at operatøren SELECT
ikke skal bruges med FROM
. Det kan returnere værdien af ethvert udtryk. Den generelle visning af dette er givet af skabelonen:
SELECT expression
Og hvis du vil kalde en funktion, så skal du skrive kode som:
SELECT function(options)
Nedenfor vil jeg give nogle eksempler på driften af operatøren SELECT
uden brug af tabeller:
# | Anmodning | Resultat |
---|---|---|
1 | VÆLG 1+1 | 2 |
2 | VÆLG 13 MOD 5 | 3 |
3 | VÆLG RAND() | 0,207714444235715497 |
4 | VÆLG CURDATE() | 2022-06-04 |
5 | VÆLG KURTID() | 00:06:02 |
6 | VÆLG NU() | 04-06-2022 00:06:43 |
Og, som du kan se, i tabellen ovenfor, for at få den aktuelle dato og klokkeslæt, skal du blot bruge en af funktionerne:
CURDATE()
- nuværende dato;CURTIME()
- nuværende tid;NOW()
– aktuelle dato og klokkeslæt.
3.3 Gruppering af data efter år og måned
Lad os huske vores opgavetabel med opgaver til medarbejdere. Lad os prøve at gruppere opgaver fra denne tabel efter år. For at gøre dette bruger vi funktionen YEAR()
, som returnerer året fra datoen overført til det.
Den første version af vores forespørgsel vil se sådan ud:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Resultatet af denne forespørgsel vil være:
id | Medarbejder-ID | navn | år | deadline |
---|---|---|---|---|
1 | 1 | Ret en fejl på frontend | 2022 | 2022-06-01 |
2 | 2 | Ret en fejl på backend | 2022 | 2022-06-15 |
3 | 5 | Køb kaffe | 2022 | 2022-07-01 |
4 | 5 | Køb kaffe | 2022 | 2022-08-01 |
5 | 5 | Køb kaffe | 2022 | 2022-09-01 |
6 | (NUL) | Ryd op på kontoret | (NUL) | (NUL) |
7 | 4 | Nyd livet | (NUL) | (NUL) |
8 | 6 | Nyd livet | (NUL) | (NUL) |
Vi kan se, at alle rækker har samme årstal, så lad os bruge to felter - år og måned. Den anden version af vores forespørgsel vil se sådan ud:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Resultatet af denne forespørgsel vil være:
id | Medarbejder-ID | navn | år | måned | deadline |
---|---|---|---|---|---|
1 | 1 | Ret en fejl på frontend | 2022 | 6 | 2022-06-01 |
2 | 2 | Ret en fejl på backend | 2022 | 6 | 2022-06-15 |
3 | 5 | Køb kaffe | 2022 | 7 | 2022-07-01 |
4 | 5 | Køb kaffe | 2022 | 8 | 2022-08-01 |
5 | 5 | Køb kaffe | 2022 | 9 | 2022-09-01 |
6 | (NUL) | Ryd op på kontoret | (NUL) | (NUL) | (NUL) |
7 | 4 | Nyd livet | (NUL) | (NUL) | (NUL) |
8 | 6 | Nyd livet | (NUL) | (NUL) | (NUL) |
Jeg vil ikke fortælle dig, hvordan du grupperer opgaver efter år og måned - du har allerede studeret dette: brug operatøren GROUP BY
.
GO TO FULL VERSION