Selectarea înregistrărilor pentru SQL și ultima lună SQL

Eșantionarea înregistrărilor pentru luna curentă și ultima a SQL


Adesea, atunci când lucrăm cu bazele de date, trebuie să afișăm înregistrări pentru perioada anterioară, de exemplu pentru ultima lună sau săptămână. Despre cum să implementăm acest lucru în MySql, vom discuta mai jos.

Și astfel, pentru a pune în aplicare acest lucru, domeniul nostru de date trebuie să fie un format datetime. Exemplu: există un tabel de comandă - ordinea în care există un camp datetime - tip DATETIME, cantitate de ordine în câmp, tip INT.

Selectarea înregistrărilor pentru SQL și ultima lună SQL

Și trebuie să cunoaștem numărul și cantitatea de comenzi pentru ziua de azi, pentru luna trecută și pentru luna precedentă.

Să începem cu un eșantion de obiecte pentru ziua de azi:

Să trăim în mai multe detalii în anumite puncte. COUNT (1) va returna numărul - numărul de înregistrări din eșantionul nostru.
Funcția CURDATE () - returnează data de astăzi.
În consecință, condiția noastră în limba rusă este: "Alegeți numărul de înregistrări din tabelul de comandă care satisface condiția - câmpul datetime este mai mare decât data curentă". Comparația în cadrul tipului DATETIME este absolut corectă din punct de vedere al MySQL.

Numărul de comenzi pentru luna curentă

Să complicăm ușor interogarea noastră SQL.

  • funcția MONTH () returnează numărul lunii;
  • funcția YEAR () revine la un an;
  • funcția NOW () returnează data și ora curente.

În consecință, în această interogare SQL, comparați dacă luna curentă LUNĂ (ACUM ()) este egală cu luna ordinară Și dacă anul curent este egal cu anul în care a fost plasat comanda. Interogarea SQL pentru calcularea cantității totale de comenzi este aproape identică și arată astfel:

funcția SUM () va însuma câmpul total_price (suma totală de comandă) a tuturor intrărilor pentru luna curentă și va returna un singur număr - suma totală a comenzilor pentru luna curentă.

În ciuda faptului că interogarea de mai sus ne îndeplinește complet sarcina, nu este optimă.
Interogarea optimă SQL în acest caz va arăta astfel:

Funcția LAST_DAY () returnează decalajul de dată în ultima zi a lunii.
În consecință, construcția LAST_DAY (CURDATE () + INTERVAL 1 DAY - INTERVAL 1 MONTH se va întoarce la noi în prima zi a lunii curente.
Ca rezultat, starea noastră se reduce la „returna toate înregistrările în care data este mai mult decât în ​​prima zi a lunii curente, dar mai mică decât în ​​prima zi a lunii următoare.“

Numărul de comenzi pentru luna precedentă

Avem o funcție nouă pentru lucrul cu datele - DATE_SUB ().
Se referă la faptul că "scade" de la o dată (transferată mai întâi) pe alta.

Din păcate, lecția a ajuns la capăt, dar mâine va apărea un nou și foarte interesant.

P.S. Astăzi am învățat cum să extragem înregistrări din baza de date MySql astăzi, actuală și ultima lună.

Retipăriți regulile

Stimate vizitator al site-ului!
Mai jos sunt termenii de utilizare și retipăririle site-ului /
Toate materialele acestui site sunt pregătite pentru dvs. personal de mine.

Lecții și articole