Inregistrati astazi / mysql

Vreau sa stochez doar conturile inregistrate ~astazi intr-o variabila (intr-o zi, spre ex: 20.05.2012), in tabelul userilor am “RegDate” cu data inregistrata doar ca este in format TIMESTAMP, adica se afiseaza asa “2019-06-03 06:42:27”, cum pot “sterge” ora intrucat sa ramana doar “2019-06-03” cand selectez si sa pot face un select in MYSQL sa-mi numere (count(*)) userii inregistrati astazi?
Trebuie sa extrag data din .php si sa o compar cu cea din MYSQL, doar ca nu stiu cum pot anula ora sa ramana doar data.

Din ce înțeleg, tu îi selectezi pe toți și abia apoi îi numeri/filtrezi din PHP. E și asta o variantă dar e greșită în mai multe feluri (e.g. performanță)

Poți face selecția direct din mysql:

SELECT COUNT(*) FROM `table` WHERE DATE(`RegDate`) = CURDATE()`
1 Like

Cam asa am query-urile de care ma folosesc, imi poti spune cum as putea sa le imbunatatesc pt o prefromanta mai mare?
Astea se fac la fiecare refresh, ar fi indicat sa folosesc cache si sa se actualizeze la fiecare minut?
PHP:

//Status Server
  $online = mysqli_query($link, "SELECT count(*) as tonline from players WHERE Status=1");
  $Online = mysqli_fetch_object($online)->tonline;

  $online = mysqli_query($link, "SELECT count(*) as tonline from players WHERE Status=1 AND Member=0");
  $CivOnline = mysqli_fetch_object($online)->tonline;

  $online = mysqli_query($link, "SELECT count(*) as tonline from players WHERE Status=1 AND (Admin>0 OR Helper>0)");
  $StaffOnline = mysqli_fetch_object($online)->tonline;

  $online = mysqli_query($link, "SELECT count(*) as tonline from players WHERE Admin>0 OR Helper>0");
  $StaffTotal = mysqli_fetch_object($online)->tonline;

Nu am testat si nu am idee daca se imbunatateste cu ceva performanta, dar o varianta de a executa dintr-o singura interogare cele 4 count-uri ar fi asa:

SELECT
    SUM(CASE WHEN Status=1 THEN 1 ELSE 0 END) AS Online, 
    SUM(CASE WHEN Status=1 AND Member=0 THEN 1 ELSE 0 END) AS CivOnline,
    SUM(CASE WHEN Status=1 AND (Admin>0 OR Helper>0) THEN 1 ELSE 0 END) AS StaffOnline,
    SUM(CASE WHEN Admin>0 OR Helper>0 THEN 1 ELSE 0 END) AS StaffTotal
FROM players

LE: Bineinteles, ar fi util sa existe indecsi pe campurile “Status”, “Member”, “Admin” si “Helper”.

Sau in loc de 3 campuri separate pentru member/admin/helper sa existe un singur enum sau integer, de exemplu denumit “Level”, indexat si asta, fireste.