ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.2981300 検索条件の指定方法がわかりません。
質問者:searching ASP+PostgreSQLで検索画面を作成しています。
テーブルに名前、生年月日しかなく年齢をSQLの中で計算しています。
こんな感じです↓
To_Char(age(current_timestamp, To_date(birthday,'YYYYMMDD')),'yy') As genzai_age

「genzai_age」をwhere句で使用したいのですがas句なので利用できません。
「genzai_age」を検索条件にする何か良い方法はないでしょうか?
ご存知の方がいらっしゃいましたら、ご教授願ください。よろしくお願いします。
困り度:
  • 困っています
質問投稿日時:
07/05/07 20:07
この質問に対する回答は締め切られました。

回答

ANo.2 #1回答者です。

別名を条件式に指定したい場合は、「インラインビューで参照する形にする」といった方法があります。

select *
from (select name,birthday,extract(year from age(current_timestamp,birthday)) as genzai_age
from t1) as x
where genzai_age between 43 and 44
回答者:chukenkenkou
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
07/05/08 05:34
この回答へのお礼chukenkenkou様
度々のご回答ありがとうございます。

今まで、AS句で指定した別名を条件式には指定できないものと思い込んでいたのですが、このようなやり方があるのですね。
大変勉強になります。
今回は初めにご教授していただいた方法を利用しました。
今回ご教授していただいた方法も、今後利用させていただきたいと思います。
ありがとうございました。

回答良回答20pt

ANo.1 例えば、誕生日が入っているbirthday列から求めた現時点での年齢が、43〜44才を検索するなら、以下のようなSQLが考えられます。

select * from t1
where extract(year from age(current_timestamp,birthday)) between 43 and 44
回答者:chukenkenkou
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/05/08 05:16
この回答へのお礼chukenkenkou様
早速のご回答ありがとうございます。

このような方法があったんですね。
早速やってみましたが、やりたかった事が見事に実現できました。
大変勉強になりました。
本当にありがとうございました。