1

所以..要根据日期类型返回年龄真的很容易:SELECT YEAR(CURDATE()) - YEAR(DateofBirth) 我们得到一个包含该人年龄的结果集

但是,如果我需要根据他们的生日日期以 d/m/y 格式(例如:2005-04-11)在表中搜索年龄范围为 60-70 的人怎么办。我认为这有点困难,因为如果你只有出生日期而不是通过一个你已经将他们的年龄计算为正常年龄(50、60 等)的列来搜索,那么搜索某个年龄是另一回事

另一个与上述问题无关的问题:

假设我有一张医生桌子,上面有他们的名字、姓氏和专长。我们有17个专业:reumatologie、orl、chirurgie等和108名医生

如何根据此格式获取该范围内的医学专业和医生列表:

例如:reumatologie - 4、orl - 5、chirurgie - 10 等

示例中的 4 和 5 是医务人员的数量。我已经尝试过连接和各种查询,但它们都没有正常工作。也许可以处理一个案例?如果是的话怎么办?

4

1 回答 1

1

对于问题 1,您可以这样做(虽然在性能方面不是很好):

SELECT YEAR(CURDATE()) - YEAR(DateofBirth) AS age
FROM tableX
WHERE (YEAR(CURDATE()) - YEAR(DateofBirth)) BETWEEN 60 AND 70 ;

如果你想要性能,你可以添加一个索引DateofBirth并使用这个版本:

SELECT YEAR(CURDATE()) - YEAR(DateofBirth) AS age
FROM tableX
WHERE DateofBirth >= MAKEDATE(YEAR(CURDATE())-70, 1) 
  AND DateofBirth < MAKEDATE(YEAR(CURDATE())-60+1, 1) ;
于 2012-06-04T09:48:57.893 回答