2010-10-11 23 views
7

Bir veritabanının, tarihin 90 güne eşit veya daha büyük olduğu kayıtlar için sorgulamak istiyorum. Bu defa ne var:Mysql Sorgulama tarihi> = 90 gün

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

$date = date ($format); 

// -90 days from today 

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

ben MYSQL sorgu nasıl yapılandıracağınızla artık sadece biraz emin değilim. Eğer verileri 90 gün ve daha yaşlı istiyorum varsayarsak

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

cevap

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

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

: böyle şey (bu yanlış olduğunu biliyorum ama yapacak başka ne gibi emin olduğum) olurdu.

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

+1, SQL ile yapmak için –

+0

SQL'de bunu yapmaya kabul edin. PHP'de yeni varlığın yaratılmasında ve bir işlevi çağırmanın asgari yükü olmasına rağmen, sorgu içindeki tarih matematiğine göre daha fazladır. –

+0

Çıktıya zaman damgası olarak ihtiyacınız varsa veya zaman damgasına karşı karşılaştırmanız gerekirse, tarih matematiğini UNIX_TIMESTAMP içinde sarın. Bu örnekte, zaman damgası çıktı istemiş olsaydınız, sorgu mysql_query olur ("SELECT * FROM yinelenen Ödemeler NEREDE dEtpmt <= UNIX_TIMESTAMP ((ŞİMDİ() - ARALIK 90 GÜN))"); –

İlgili konular