アプリ版:「スタンプのみでお礼する」機能のリリースについて

urizakaです

JSP+PostgreSQLで登録のためのシステムを作成しているのですが、その中で入力された誕生日から現在の年齢を計算し、たまったデータから後で年齢検索(たとえば20歳~29歳)を行えるようにしたいと考え、Interval(正確にはInterval Year)というフィールドを使ってみたのですが、このフィールドに

insert into exam(age) values(now() - '1999/12/31');

というようなSQL文を使ってデータを入れると

   age
----------------------------
949 days 12:59:22.1089999974

となります、今度はこのデータを年齢として取り出したいのですが、この状態からどうやって年齢を取り出して良いのかがわかりません。

select to_Char(age,'YY') from exam where code_ID =1

とSQL文を入力しても「00」という回答が帰ってきてしまいます。
どのようにすれば、ちゃんと年齢を返すようになるのでしょうか?
すみませんが、ご存知の方がいらっしゃったら教えてください。
ちなみに、

update exam set age='20years' where code_id=1

とSQL文を入力すると「20years」と入力されることにヒントがありそうな気もするのですが・・・

環境 OS:Windows2000
   DB:PostgreSQL7.2.1(Windows-Native版)
言語:Java(J2SDK1.4)

よろしくお願いします。

A 回答 (2件)

いくつか問題があるようですが。



intervalでは「年齢」がわからないので、DBの外でプログラミングが必要かと思います。
一年の長さは閏年があるので変わるし、時間の基点がないと「年齢」は分からないってこと。

数日の誤差を含んでよいなら力技がありそうだけど。

interval型は日付型ではないのでフォーマット変換もうまくいかないようですね。
    • good
    • 0
この回答へのお礼

urizakです

そうでしたか、DB外での処理が必要ですか…
楽しようと考えてはいけないということですね。
さっそくJavaで年齢プログラムを作ってみようと思います。
どうもありがとうございました。

お礼日時:2002/08/09 16:03

力技ってのは、



そのintervalを'2000/01/01'に加算し、'YYY'でフォーマットするとか。
100才以上の人にも対応してあげてください。

最大2日のずれに収まるのではないかと。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す