Domanda

Mi scuso se a questa domanda è già stata data risposta molte volte, ma non sono riuscito a trovare la risposta e sono rimasto sconcertato.

Ho una query mysql che apparentemente restituisce il risultato desiderato quando la eseguo nel database, tuttavia quando eseguo la query tramite PHP, non viene restituita correttamente.

Nel database, le date sono memorizzate in questo modo:

2009-08-13T00:00:00

Quello che voglio fare NON è visualizzare dati più vecchi della data odierna.Quindi, nella clausola where, fai questo:

        WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d')

La mia intenzione è eliminare la parte temporale, poiché stavo lottando per trovare un modo per convertire la parte temporale di now() in mezzanotte.

Sembra funzionare quando lo eseguo su PHPMyadmin, ma quando eseguo lo script php non funziona.

Qualche idea?

Grazie molto!

È stato utile?

Soluzione

Sembra funzionare quando lo eseguo su PHPMyadmin, ma quando eseguo lo script php non funziona.

Non stai usando qualcosa del genere sprintf per costruire la corda sei tu?Se è così, devi scappare dal % con un altro %

In ogni caso è possibile utilizzare la funzione DATE()

WHERE `dateField1` > DATE(NOW())

Altri suggerimenti

Nickf ha ragione.Sono d'accordo.

Se utilizzi la funzione sprintf() per effettuare una chiamata SQL, puoi trasformare la tua query in questa:

  $query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id);
//Then submit $query for SQL query processing...

PHP vede % come identificatore di tipo quando si utilizza sprintf().

Per evitare questo, è necessario aggiungere un altro % davanti alla stringa del formato MySQL, ovvero %%Y o %%m o %%d.L'output effettivo della query MySQL diventerebbe di nuovo %Y o %m o %d.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top