Öncelikle şahsi fikrim olarak bu tarz date ile alakalı bilgi tuttuğumda genelde değerleri integer alanda mikrotime tutarım.

Kafanızı fazla karıştırmadan ufak bir örnek vereceğim. Tarihleri mikrotime olarak tuttuğumuzu farz ediyorum field'inda.
/* Bir tarihi kısa yoldan mikrotime almak istersek strtotime fonksiyonu işimizi görür.. Veritabanındaki field da nasıl tutacağız derseniz aşağıdaki kod ile mikrotime değerini alıp yazmamız yeterli..

$birthday = strtotime("01.12.2000");
*/

// Gelelim sorguya

$yas1 = strtotime("-25 years");
$yas2 = strtotime("-30 years");

$sorgu = "SELECT * FROM tablename WHERE fieldname<=$yas1 && fieldname>=$yas2";
Neden mikrotime olarak tutmak tarih bazında iyi derseniz sorgular daha hızlıdır ve geriye dönüş değerleri birden fazla şekilde kullanabiliyoruz.