• Bannato Super User

    Php sql - select dei valori inseriti oggi

    Salve

    Ho bisogno di modificare una query, in pratica ho realizzato una query che mostra i risultati delle ultime 24 ore mi interesserebbe che mi mostrasse solo i valori di oggi e non delle ultime 24 ore (del giorno di oggi).

    In pratica vorrei che mostrasse solo i valori che hanno la data di oggi (ma il timestamp è numerico).

    Spero qualcuno posso consigliarmi, sono alcuni giorni che cerco una soluzione invano, penso che andrebbe convertito il timestamp in data per effettuare un raffronto ma non ho ancora capito come poter risolvere.

    Ringrazio tutti per aiuto

    Buona Domenica

    
    $now=time();  //RECUPERO IL TIMESTAMP DI ADESSO
    $old_date=($now-86400);     //RECUPERO IL TIMESTAMP E SOTTRAGGO 24 ORE
    
    $sql=$Db1->query("SELECT COUNT(id) AS total FROM ptsu_log WHERE dsub>$old_date AND status = 0");
    
    dsub>$old_date (DSUB = TIMESTAMP SALVATO NEL DATABASE)
    
    

  • ModSenior

    Ciao guadagnaeuro,
    puoi usare la funzione mktime.


  • Bannato Super User

    Salve

    Ripropongo le soluzioni che mi sono state prospettate ma non riescono a selezionare i valori con dati di oggi, mi restituiscono sempre 0 elementi (gli elementi in data di oggi sono presenti invece)

    1. soluzione non funzionante
      $numgiorni=0;
      $sql=$Db1->query("SELECT COUNT(id) AS total FROM ptsu_log WHERE TO_DAYS(now()) - TO_DAYS(dsub) = $numgiorni AND status = 0");

    2. soluzione non funzionante
      $sql=$Db1->query("SELECT COUNT(id) AS total FROM ptsu_log WHERE DATE_FORMAT(dsub, '%d/%m/&Y')=$now AND status = 0");

    Spero possiate trovarmi una alternativa o una correzione alle suddette soluzioni che mi rendano funzionante la select

    Vi ringrazio tutti per aiuto.

    Buonasera


  • ModSenior

    Utilizzare mktime lato php come ti ho indicato?


  • Bannato Super User

    Il campo è salvato come timestamp numerico e ci sono migliaia di dati dunque ho bisogno di adattare qualcosa alla struttura gia utilizzata dal sito


  • User Attivo

    @guadagnaeuro said:

    Il campo è salvato come timestamp numerico
    E menomale!
    Puoi ricavarne giorno-mese-anno, confrontarli con quelli attuali e agire di conseguenza.
    Di funzioni dedicate alle date, php ne possiede a iosa.
    Devi semplicemente utilizzare il metodo che preferisci.


  • ModSenior

    Ma hai guardato cosa fà mktime? È proprio quello che serve a te...


  • Bannato Super User

    Le 2 query che ho indicato sopra sono state realizzate sembrano perfette ma restituiscono sempre valore 0

    Se per favore mi scrivete la query gia modificata cosi mi rendo conto di come cambiarla, la query originale l'ho indicata sotto spero che sia adattabile fato che sono vari giorni che provo senza trovare soluzione

    Grazie

    
    
    $now=time();  //RECUPERO IL TIMESTAMP DI ADESSO
    $old_date=($now-86400);     //RECUPERO IL TIMESTAMP E SOTTRAGGO 24 ORE
    
    $sql=$Db1->query("SELECT COUNT(id) AS total FROM ptsu_log WHERE dsub>$old_date AND status = 0");
    
    
    
    dsub>$old_date (DSUB = TIMESTAMP SALVATO NEL DATABASE)