1

だから..日付型に基づいて年齢を返すのはとても簡単です: SELECT YEAR(CURDATE()) - YEAR(DateofBirth) そして、その人の年齢で結果セットを取得します

しかし、d/m/y (例: 2005-04-11) の形式の誕生日に基づいて、テーブル内の年齢範囲が 60 から 70 の人を検索する必要がある場合はどうでしょうか。年齢が通常の年としてカウントされている列(50、60など)を検索するのではなく、生年月日しかない場合、特定の年齢を検索するのは別のことなので、ちょっと難しいと思いました。

上記の問題とは関係のない別の問題:

名前、姓、および専門分野を持つ医療関係者のテーブルがあるとします。reumatologie、orl、chirurgie など 17 の専門分野と 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 に答える