2016-06-28 5 views
1

В базе данных у меня есть таблица DOB, которая является DATE. поэтому у меня проблема в функции поиска, потому что я хочу искать людей по дате, чтобы быть точным в любое время. Итак, поля в поиске - это ВОЗРАСТ, например 18-25,. Я хочу сделать searchage1 = 18 в этом примере и searchage2 = 25.База данных PHP DATE по сравнению с сегодняшними DATE

`dob BETWEEN ".$search_data['searchage1']." AND ".$search_data['searchage2'];` 

Я хочу, чтобы преобразовать это 18 и 25 в DATE затем сравнить его ДАТ базы данных. Я пробовал какую-то возможность без каких-либо претензий, никакой идеи?

+0

Да его ДАТА гггг/мм/дд –

+0

какой БД это? если это mysql, то только yyyy-mm-dd является допустимым форматом даты/времени. 'yyyy/mm/dd' будет рассматриваться как строка, а не дата. –

ответ

0

Во-первых, вам необходимо рассчитать age на основе поля dob, а затем использовать его в своих WHERE заявлениях.

Пожалуйста, смотрите эти темы о том, как вычислить возраст в SQL: here или here

EG:

SELECT *, DATEDIFF(dob, '2016-06-28')/365.25 AS `age` WHERE `age` >= '18' AND `age` =< '25'; 

или

SELECT *, YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) AS `age` WHERE `age` >= '18' AND `age` =< '25'; 
+0

(dob, '2016-06-28') Что означает 2016-06-28? могу ли я использовать (dob, CURRENT_TIMESTAMP) вместо него? –

+0

Это вычисляет разницу между двумя датами, последняя - сегодняшняя дата. Я просто взял этот SQL из других ответов, которые я опубликовал. –

+0

Итак, если мы ищем разницу, то, как кажется, 2016-06-28 - это СЕГОДНЯ дата, поэтому мы можем просто использовать CURRENT_TIMESTAMP –