• User

    Problema data corrente

    Salve, vorrei selezionare da una tabella delle righe che abbiamo cone campo dal (datetime) un valore superiore o uguale alla data odierna.
    1- ho provato la soluzione con NOW() etc
    2- ho provato la soluione con mktime() e con date('Y-m-d')

    Sempre righe vuote :mmm:
    Grazie mille!


  • Consiglio Direttivo

    Ciao NicolePaolini,
    la soluzione migliore è senz'altro quella di lavorare con dei timestamp, se non ti è possibile trasformarle, potresti postare la query inviata così proviamo a sistemarla? 🙂


  • User

    @Samyorn said:

    Ciao NicolePaolini,
    la soluzione migliore è senz'altro quella di lavorare con dei timestamp, se non ti è possibile trasformarle, potresti postare la query inviata così proviamo a sistemarla? 🙂
    mmm ci provo!
    da datetime a timestamp e poi cosa uso per il confronto? now()? altro?


  • Consiglio Direttivo

    Per fare questo dovresti sostituire l'attuale campo in datetime con un campo INT convertendo le date in timestamp, riadattando ovviamente anche il codice in modo che i prossimi dati verranno inseriti in timestamp.

    Una volta che avrai i dati in formato timestamp significa che lavorerai con dei numeri interi quindi con i semplicissimi <= otterrai il risultato che cerchi. 😉

    time(); per ottenere il timestamp attuale e quindi confronti tale valore con il contenuto del Db
    [PHP]$time=time();
    $sql="SELECT * FROM table WHERE campodata >= '$time'";[/PHP]
    😉


  • User

    @Samyorn said:

    Per fare questo dovresti sostituire l'attuale campo in datetime con un campo INT convertendo le date in timestamp, riadattando ovviamente anche il codice in modo che i prossimi dati verranno inseriti in timestamp.

    Una volta che avrai i dati in formato timestamp significa che lavorerai con dei numeri interi quindi con i semplicissimi <= otterrai il risultato che cerchi. 😉

    time(); per ottenere il timestamp attuale e quindi confronti tale valore con il contenuto del Db
    [PHP]$time=time();
    $sql="SELECT * FROM table WHERE campodata >= '$time'";[/PHP]
    😉

    Non occorre trasformare tutto in timestamp: anche con i datetime si possono fare questo tipo di confronti, il dbms lo consente senza problemi, l'unica differenza è che si risparmiano 2byte in archiviazione se non ricordo male, inoltre se ha un db pieno zeppo di record dovrebbe riconvertire tutto.

    es:
    [PHP]$sql = "SELECT * FROM table WHERE datefield >= NOW()";[/PHP]