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()`
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.