2010-10-11 23 views
7

Voglio interrogare un database per i record in cui la data è uguale o superiore a 90 giorni. Questo è quello che ho finora:Mysql Data query> = 90 giorni

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

$date = date ($format); 

// -90 days from today 

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

Sono solo un po 'incerto ora come strutturare la query MySQL. Sarebbe qualcosa di come questo (so che questo è sbagliato, ma io sono sicuro di cosa altro da fare):

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

risposta

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

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

Supponendo che si desidera che i dati 90 giorni di età.

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

+1 per farlo con SQL –

+0

D'accordo con farlo in SQL. Sebbene sia un sovraccarico minimo nella creazione della nuova var in PHP e nel richiamo di una funzione, è ancora più un overhead relativo al calcolo matematico della data all'interno della query. –

+0

Se è necessario l'output come timestamp o è necessario confrontarlo con un timestamp, racchiudere la data matematica all'interno di UNIX_TIMESTAMP. In questo esempio, se si desidera l'output di data/ora, la query sarà mysql_query ("SELECT * FROM recurringPayments WHERE lastpmt <= UNIX_TIMESTAMP ((NOW() - INTERVAL 90 DAY))"); –