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 SELECTinte 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 SELECTutan 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.