2016-06-28 62 views
1

在數據庫中,我有DOB表,這是DATE。所以我在搜索功能方面存在問題,因爲我想通過日期搜索人來隨時更新正確的年齡。因此,搜索字段是AGE,例如18-25,。我要讓searchage1 = 18在這個例子和searchage2 = 25PHP數據庫DATE與今天比較DATE

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

我想這18和25轉換成日期,那麼它比較到數據庫的日期。我試過一些沒有成功的可能性,有什麼想法?

+0

是其日YYYY/MM/DD –

+0

什麼DB這是?如果是mysql,那麼只有yyyy-mm-dd是有效的日期/時間格式。 'yyyy/mm/dd'將被視爲一個字符串,而不是日期。 –

回答

0

首先,您需要計算基於dob字段的age字段,然後在您的WHERE語句中使用該字段。

請參閱如何計算在SQL年齡這些線程:herehere

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 –