2011-04-08 42 views
4

我在MySQL數據庫表中有一個BirthDate列來存儲用戶的出生日期。現在我有兩個字段的HTML/PHP形式(1. Age from 2. Age To)。如何通過MySQL查詢使用BirthDate列獲得年齡?

如果用戶想要獲得年齡在10年到20年之間的所有用戶,是否可以使用BirthDate列進行MySQL查詢。

感謝

+0

什麼是出生日期字段的數據類型? – 2011-04-08 07:02:21

+0

@dorkitude:日期 – Awan 2011-04-08 07:04:11

回答

8

您的查詢將類似於此:

SELECT * FROM your_table WHERE YEAR(CURDATE())-YEAR(BirthDate) BETWEEN 10 AND 20; 
+0

它看起來簡單而完美。 – Awan 2011-04-08 11:17:05

+0

@soulkphp對於出生日期在當前日期之後的人不起作用。例如,如果某人出生於1986年11月30日,他將有25歲,而不是26歲,因爲你的查詢會計算它。 – 2012-07-27 06:56:49

+1

@RomainGuidoux我做了一個瘋狂的假設,人們不能在未來出生:) – soulkphp 2012-09-14 17:25:23

5
select * from table where 
(year(curdate())-year(dob))-(right(curdate(),5)< right(dob,5)) 
between 10 and 20 
8

你可以得到這樣

SELECT column1, column2, 
    DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(dob)), '%Y') + 0 as age  
WHERE age >10 AND age <20 ; 
+0

這應該是選定的答案。這將年齡推遲到今年的一天。 – James 2015-04-15 19:23:13

2

,檢查的年份和月份另一種解決方案:

SELECT * FROM yourTable WHERE FLOOR(DATEDIFF(curdate(), birthdate)/365.25) BETWEEN 10 AND 20 
0

它也可以通過使用子查詢achived:

select * 
    from (select *, TIMESTAMPDIFF(YEAR, birthday, NOW()) as age from table_name) as sub_query 
    where age between 10 AND 20