簡體   English   中英

(PHP)在數據庫中搜索年齡時提取正確的生日

[英](PHP) Extracting the correct birthdate when searching for age in a database

在我的數據庫中,我有一個設置了出生日期的字段(例如1989.08.10(YYYY.MM.DD))。 我還有一個功能,可以將此信息轉換為正確的年份(例如17、22、30年)。 在搜索引擎中,我要根據用戶所需的各種輸入來建立查詢,而其中兩個是年齡(MIN和MAX)。 例如,選擇18-25歲之間的所有年齡段。

我的問題是我不確定如何獲得最終結果,因為我無法想象如何將其添加到查詢中。 我想我將不得不以某種方式進行兩個WHILE循環,以使最終結果看起來像這樣:

while($row = mysql_fetch_array($query){
$age = convertFunc($row['birthdate']);
while(XXXXX){
SOME CODE HERE
}
}

我對此很迷茫,但需要澄清。 正是我想要的是在針對數據庫的搜索查詢中與此類似的內容: SELECT * FROM users WHERE user = '$name' AND fromAge >= 18 AND toAge <= 25

這將選擇與MIN和MAX對應的年齡的所有字段。

嘗試類似的東西。

select * from users where datediff(birthdate,now()) between date_add(now(),interval -15 years) and date_add(now(),interval -25 years)

根據您的數據庫結構,您可以在SQL語句中使用DATEDIFF。 參考鏈接

這就是為什么將所有日期另存為時間戳而不是實際日期的原因,因為查找兩個數值之間的范圍要容易得多。

您可以使用當前設置嘗試執行以下操作,以找到18-25歲之間的所有人:

$age1 = 18; //These two would be external inputs from whatever search form
$age2 = 25;

$date1 = date("Y.M.d",time() - ($age1 * 365 * 24 * 60 * 60));//Subtract the number of seconds equivalent to X years from current timestamp, Convert timestamps to appropriate dates for the format in the DB
$date2 = date("Y.M.d",time() - ($age2 * 365 * 24 * 60 * 60));//Strtotime("18 years ago") might work, not sure

$sql = mysql_query("SELECT * FROM `users` WHERE `birthdate` >= '$date1' AND `birthdate` <= '$date2'");
$result = mysql_fetch_assoc($sql);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM