2010-10-11 18 views
7

Chcę wysłać zapytanie do bazy danych dla rekordów, których data jest równa lub większa niż 90 dni. To, co mam tak daleko:Mysql Data zapytania> = 90 dni

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

$date = date ($format); 

// -90 days from today 

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

Jestem tylko trochę niepewni teraz jak struktura zapytania MySQL. Byłoby coś tak (wiem, że to źle, ale jestem pewien, co jeszcze do zrobienia):

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

Odpowiedz

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

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

Zakładając, że chcemy dane 90 dni oraz starsze.

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

+1 za wykonanie z SQL –

+0

Zgadzam się z tym w SQL. Mimo, że jest to minimalne obciążenie podczas tworzenia nowego var w PHP i wywoływania funkcji, to wciąż jest więcej narzutów niż wykonywanie matematyki daty w zapytaniu. –

+0

Jeśli potrzebujesz danych wyjściowych jako znacznika czasu lub chcesz porównać je ze znacznikiem czasu, zawiń matematykę daty w klasie UNIX_TIMESTAMP. W tym przykładzie, jeśli chcesz uzyskać dane wyjściowe timestamp, zapytanie będzie mysql_query ("SELECT * FROM recurringPayments WHERE lastpmt <= UNIX_TIMESTAMP ((TERAZ() - INTERVAL 90 DAY))"); –

Powiązane problemy