3.1 Lista de funcții pentru lucrul cu data și ora

Data și ora sunt unul dintre cele mai comune tipuri de date stocate în baze de date. De aceea, lista de funcții pentru lucrul cu ele este foarte mare. Iată cele mai populare:

# Funcţie Descriere
1 CURDATE() Returnează data curentă
2 CURTIME() Returnează ora curentă
3 ACUM(), ORA LOCAL() Returnează data și ora curente
4 AN() Returnează anul de la data
5 LUNĂ() Returnează luna de la o dată
6 DAY(), DAYOFMONTH() Returnează ziua de la o dată
7 ORA() Se întoarce la doar câteva ore
8 MINUT() Anunță minute de la ora
9 AL DOILEA() Returnează secunde de la timp
10 DAYNAME() Returnează numele zilei săptămânii: luni,...
unsprezece MONTHNAME() Returnează numele lunii: ianuarie,...
12 SĂPTĂMÂNĂ() Returnează săptămâna de la o dată
13 ZIUA SĂPTĂMNICĂ() Returnează numărul zilei săptămânii: luni - 0, marți - 1
14 WEEKOFYEAR() Returnează numărul săptămânii din an
15 ZI A SĂPTĂMÂNII() Returnează numărul zilei săptămânii: duminică - 1, luni - 2
16 DAYOFYEAR() Returnează ziua anului: 1-366
17 DATA() Returnează doar data dintr-un obiect „datetime”.
18 ADDDATE() Adaugă zile la o dată
19 SUBDATE() Scade zile dintr-o dată
20 ADDTIME() Adaugă din când în când
21 SUBTIME() Scade timpul din timp

Am grupat în mod deliberat funcțiile în grupuri mici pentru a fi mai ușor de înțeles cum să lucrezi cu ele. Mai jos vom lua în considerare câte o funcție din fiecare grup.

Puteți găsi o listă completă de funcții pentru lucrul cu data și ora la linkul: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html

3.2 Funcții de apelare

Apropo, din moment ce învățăm atât de multe funcții, cred că este util să menționăm că operatorul SELECTnu trebuie să fie folosit cu FROM. Poate returna valoarea oricărei expresii. A cărui vedere generală este dată de șablon:

SELECT expression

Și dacă doriți să apelați o funcție, atunci trebuie să scrieți cod ca:

SELECT function(options)

Mai jos voi da câteva exemple de funcționare a operatorului SELECTfără a recurge la tabele:

# Cerere Rezultat
1 SELECTARE 1+1 2
2 SELECTARE 13 MOD 5 3
3 SELECTARE RAND() 0,20771444235715497
4 SELECTARE CURDATE() 2022-06-04
5 SELECTARE CURTIME() 00:06:02
6 SELECTAȚI ACUM() 2022-06-04 00:06:43

Și, după cum puteți vedea, în tabelul de mai sus, pentru a obține data și ora curente, trebuie doar să utilizați una dintre funcțiile:

  • CURDATE()- data curenta;
  • CURTIME()- ora curentă;
  • NOW()– data și ora curente.

3.3 Gruparea datelor pe an și lună

Să ne amintim tabelul nostru de sarcini cu sarcini pentru angajați. Să încercăm să grupăm sarcinile din acest tabel pe ani. Pentru a face acest lucru, folosim funcția YEAR(), care returnează anul de la data transmisă acestuia.

Prima versiune a interogării noastre va arăta astfel:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    deadline
FROM task

Rezultatul acestei interogări va fi:

id card de identitate al angajatului Nume an Termen limită
1 1 Remediați o eroare pe front-end 2022 2022-06-01
2 2 Remediați o eroare pe backend 2022 2022-06-15
3 5 Cumpără cafea 2022 2022-07-01
4 5 Cumpără cafea 2022 2022-08-01
5 5 Cumpără cafea 2022 2022-09-01
6 (NUL) Curățați biroul (NUL) (NUL)
7 4 Bucură-te de viață (NUL) (NUL)
8 6 Bucură-te de viață (NUL) (NUL)

Putem vedea că toate rândurile au același an, așa că să folosim două câmpuri - an și lună. A doua versiune a interogării noastre va arăta astfel:

SELECT
    id,
    employee_id ,
    name,
    YEAR(deadline) AS year,
    MONTH(deadline) AS month,
    deadline
FROM task

Rezultatul acestei interogări va fi:

id card de identitate al angajatului Nume an lună Termen limită
1 1 Remediați o eroare pe front-end 2022 6 2022-06-01
2 2 Remediați o eroare pe backend 2022 6 2022-06-15
3 5 Cumpără cafea 2022 7 2022-07-01
4 5 Cumpără cafea 2022 8 2022-08-01
5 5 Cumpără cafea 2022 9 2022-09-01
6 (NUL) Curățați biroul (NUL) (NUL) (NUL)
7 4 Bucură-te de viață (NUL) (NUL) (NUL)
8 6 Bucură-te de viață (NUL) (NUL) (NUL)

Nu vă voi spune cum să grupați sarcinile pe an și lună - ați studiat deja acest lucru: utilizați operatorul GROUP BY.