2010-10-11 5 views
7

Je souhaite interroger une base de données pour les enregistrements dont la date est égale ou supérieure à 90 jours. C'est ce que j'ai jusqu'à présent:Mysql Date de la requête> = 90 jours

$format = 'Y-m-j G:i:s'; 

$date = date ($format); 

// -90 days from today 

date ($format, strtotime ('-90 day' . $date)); 

Je suis juste un peu incertain maintenant comment structurer la requête MYSQL. Serait-il quelque chose comme ça (je sais que cela est faux, mais je ne suis pas sûr de ce que d'autre à faire):

"SELECT * FROM recurringPayments WHERE lastpmt >= date ($format, strtotime ('-90 day' . $date)) "; 

Répondre

5
<?php 
$d = date ($format, strtotime ('-90 days')); 

mysql_query("SELECT * FROM recurringPayments WHERE lastpmt <= '$d'"); 
?> 

En supposant que vous voulez que les données 90 jours et plus.

19
<?php 
mysql_query("SELECT * FROM recurringPayments WHERE lastpmt <= (NOW() - INTERVAL 90 DAY)"); 
?> 
+0

+1 pour le faire avec SQL –

+0

Acceptez de le faire en SQL. Bien que la création de la nouvelle variable en PHP et l'invocation d'une fonction soient un minimum, il s'agit toujours d'une surcharge par rapport au calcul des dates dans la requête. –

+0

Si vous avez besoin de la sortie en tant qu'horodatage ou avez besoin de comparer avec un horodatage, enveloppez la date math dans UNIX_TIMESTAMP. Dans cet exemple, si vous voulez une sortie d'horodatage, la requête sera mysql_query ("SELECT * FROM recurringPayments OERE lastpmt <= UNIX_TIMESTAMP ((MAINTENANT() - INTERVAL 90 DAY))"); –

Questions connexes