3.1 Lista över funktioner för att arbeta med datum och tid
Datum och tid är en av de vanligaste typerna av data som lagras i databaser. Det är därför listan över funktioner för att arbeta med dem är mycket stor. Här är de mest populära:
# | Fungera | Beskrivning |
---|---|---|
1 | CURDATE() | Returnerar det aktuella datumet |
2 | CURTIME() | Returnerar aktuell tid |
3 | NU(), LOKALTID() | Returnerar aktuellt datum och aktuell tid |
4 | ÅR() | Returnerar år från datum |
5 | MÅNAD() | Returnerar månaden från ett datum |
6 | DAY(), DAYOFMONTH() | Returnerar dagen från ett datum |
7 | TIMME() | Returnerar endast timmar från tidpunkten |
8 | MINUT() | Meddelar minuter från tidpunkten |
9 | ANDRA() | Returnerar sekunder från tiden |
10 | DAYNAME() | Returnerar namnet på veckodagen: måndag, ... |
elva | MONTHNAME() | Returnerar månadens namn: januari, ... |
12 | VECKA() | Returnerar veckan från ett datum |
13 | VECKODAG() | Returnerar veckodagens nummer: måndag - 0, tisdag - 1 |
14 | WEEKOFYEAR() | Returnerar veckonummer för året |
15 | DAG I VECKAN() | Returnerar veckodagens nummer: söndag - 1, måndag - 2 |
16 | DAGÅR() | Returnerar årets dag: 1-366 |
17 | DATUM() | Returnerar endast datumet från ett "datetime"-objekt |
18 | ADDDATE() | Lägger till dagar till ett datum |
19 | SUBDATE() | Subtraherar dagar från ett datum |
20 | ADDTIME() | Lägger till tid till annan |
21 | SUBTIME() | Subtraherar tid från tid |
Jag grupperade medvetet funktionerna i små grupper för att göra det lättare att förstå hur man arbetar med dem. Nedan kommer vi att behandla en funktion från varje grupp.
Du hittar en komplett lista över funktioner för att arbeta med datum och tid på länken: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Anropsfunktioner
Förresten, eftersom vi lär oss så många funktioner tycker jag att det är bra att nämna att operatören SELECT
inte behöver användas med FROM
. Det kan returnera värdet för alla uttryck. Den allmänna uppfattningen om vilken mallen ger:
SELECT expression
Och om du vill anropa någon funktion måste du skriva kod som:
SELECT function(options)
Nedan kommer jag att ge några exempel på hur operatören fungerar SELECT
utan att använda tabeller:
# | Begäran | Resultat |
---|---|---|
1 | VÄLJ 1+1 | 2 |
2 | VÄLJ 13 MOD 5 | 3 |
3 | VÄLJ RAND() | 0,207714444235715497 |
4 | VÄLJ CURDATE() | 2022-06-04 |
5 | VÄLJ CURTIME() | 00:06:02 |
6 | VÄLJ NU() | 2022-06-04 00:06:43 |
Och, som du kan se, i tabellen ovan, för att få aktuellt datum och tid, behöver du bara använda en av funktionerna:
CURDATE()
- dagens datum;CURTIME()
- aktuell tid;NOW()
– aktuellt datum och tid.
3.3 Gruppera data efter år och månad
Låt oss komma ihåg vår uppgiftstabell med uppgifter för anställda. Låt oss försöka gruppera uppgifter från den här tabellen efter år. För att göra detta använder vi funktionen , YEAR()
som returnerar året från det datum som skickats till det.
Den första versionen av vår fråga kommer att se ut så här:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Resultatet av denna fråga blir:
id | Anställnings-ID | namn | år | deadline |
---|---|---|---|---|
1 | 1 | Fixa en bugg på frontend | 2022 | 2022-06-01 |
2 | 2 | Fixa en bugg på backend | 2022 | 2022-06-15 |
3 | 5 | Köp kaffe | 2022 | 2022-07-01 |
4 | 5 | Köp kaffe | 2022 | 2022-08-01 |
5 | 5 | Köp kaffe | 2022 | 2022-09-01 |
6 | (NULL) | Städa kontoret | (NULL) | (NULL) |
7 | 4 | Njut av livet | (NULL) | (NULL) |
8 | 6 | Njut av livet | (NULL) | (NULL) |
Vi kan se att alla rader har samma årtal, så låt oss använda två fält - år och månad. Den andra versionen av vår fråga kommer att se ut så här:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Resultatet av denna fråga blir:
id | Anställnings-ID | namn | år | månad | deadline |
---|---|---|---|---|---|
1 | 1 | Fixa en bugg på frontend | 2022 | 6 | 2022-06-01 |
2 | 2 | Fixa en bugg på backend | 2022 | 6 | 2022-06-15 |
3 | 5 | Köp kaffe | 2022 | 7 | 2022-07-01 |
4 | 5 | Köp kaffe | 2022 | 8 | 2022-08-01 |
5 | 5 | Köp kaffe | 2022 | 9 | 2022-09-01 |
6 | (NULL) | Städa kontoret | (NULL) | (NULL) | (NULL) |
7 | 4 | Njut av livet | (NULL) | (NULL) | (NULL) |
8 | 6 | Njut av livet | (NULL) | (NULL) | (NULL) |
Jag kommer inte att berätta för dig hur du grupperar uppgifter efter år och månad - du har redan studerat detta: använd operatören GROUP BY
.