yılın tarihini kullanarak mysql sorgu

3 Cevap php

Mysql içine kayıtlarını sorgulamak için bir sorun var

explanation below The user could pick a date to assign in variable fromdate and todate

örnek.

$fromdate = 2008/01/01
$todate = 2009/10/31

Yukarıdaki durumda, i ff ile döngü ve sorgu var:

SELECT * FROM table where date BETWEEN '2008/01/01' AND '2008/12/31';

İkinci döngü

SELECT * FROM table where date BETWEEN '2009/01/01' AND '2009/10/31';

$fromdate ve $todate bir yıldan fazla ise o zaman yılda benim sorgu sınırlamak zorunda. Ama az bir yıl sonra sorguda $fromdate ve $todate kullanırsanız.

Şimdiden teşekkürler

Tirso

3 Cevap

Sen tarihini hesaplamak için böyle bir şey kullanabilirsiniz.

$d1 = new DateTime($todate);
$d2 = new DateTime($fromdate);
$d2->modify("+1 year");
$min = min($d1, $d2);
$todate = $min->format('Y/m/d');

Eğer sonuçları sayfalandırmamayı istiyorsanız, $todate hesaplama yapmadan önce her sayfada $fromdate değiştirmek zorunda kalacak. Eğer üçüncü sayfada iseniz Örneğin, ikinci sayfasında ise, ilk yük $fromdate bir DateTime nesne ve eklemek bir yıl içine, iki yıl, vb eklemek

Ne demek istediğinizi tam olarak emin değil ama mysql Year function kullanamıyveyaum?

gibi bir şey:

SELECT * FROM table WHERE YEAR(`yourdatefield`) = '2008'

veya

SELECT * FROM table WHERE YEAR(`yourdatefield`) BETWEEN '2008' AND '2009';

Birincisi ve en önemlisi, MySQL tarihleri ​​YYYY-AA-GG (değil YYYY / AA / GG) olduğunu, bu yüzden emin doğru bunu yapmak. Yanlış sonuçlar görüyoruz neden olabilir.

BETWEEN (doğru biçimlendirilmiş) tarihleri ​​ile çok iyi çalışıyor. Örnek sorgu:

SELECT * FROM table WHERE date BETWEEN '2008-05-12' AND '2009-04-23';