2015-07-31 2 views
0

У меня есть таблица MySQL с полем dob(DATE format), теперь мне нужно получить записи по возрасту. Например, я написал запрос на выборку записей более 18 лет. Мне нужно получить записи по возрасту, лежащие в 18 year to 30 year старых. Может ли кто-нибудь сказать мне точный запрос по этой проблеме. Уже Пробовал запрос являетсяМне нужно получить данные mysql между возрастом

SELECT id,dob FROM profiles WHERE DATE_SUB(CURDATE(),INTERVAL 18 YEAR) > dob;  

ответ

1

Вы можете использовать между ними, если вы бы вкл.доставкой 18 или 30 лет:

SELECT id,dob FROM profiles WHERE dob between DATE_SUB(CURDATE(),INTERVAL 18 YEAR) and DATE_SUB(CURDATE(),INTERVAL 30 YEAR) 

или если твой должны исключено:

SELECT id,dob FROM profiles WHERE dob < DATE_SUB(CURDATE(),INTERVAL 18 YEAR) and dob > DATE_SUB(CURDATE(),INTERVAL 30 YEAR) 
+0

благодарит за помощь :) – amrit

+0

@amrit Добро пожаловать. – Jens

0

Я искренне ненавижу вычитая даты , поскольку функции могут выполнять нечетные данные, если вы поместите данные в другом порядке. Я предпочитаю добавлять, проще и без ошибок: P

SELECT id,dob FROM profiles WHERE DATE_ADD(dob,INTERVAL 18 YEAR) >= CURDATE() AND DATE_ADD(dob,INTERVAL 30 YEAR) <= CURDATE(); 
0
set sdate := DATE_SUB(CURDATE(),INTERVAL 18 YEAR); 
set edate := DATE_SUB(CURDATE(),INTERVAL 30 YEAR); 
SELECT id,dob FROM profiles 
WHERE dob < sdate and dob > edate; 

Это намного лучше, так как на производительность на больших/огромный стол.

Смежные вопросы