- - PR -
Oracleでの年齢計算について。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-02-28 12:41
こんにちは 何歳何ヶ月何日 というような年齢の計算をしたいのですが、 MONTHS_BETWEEN を使用すると、年齢は計算できたのですが、 月日まで計算取得できませんでした。 SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('1984/02/27','YYYY/MM/DD')) ,TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('1984/02/27','YYYY/MM/DD'))/12) FROM DUAL xx歳xxヶ月xx日までの計算方法を教えてください。 どうかよろしくお願いいたします。 環境 WindowsXP Oracle9iR2 |
|
投稿日時: 2006-02-28 15:23
MONTHS_BETWEEN関数で返ってきた値は整数部が月数、小数部が日数に相当する値だったはずです。
ですのでTRUNC関数で小数部を切り捨てずに、まずはそのまま値を取得して年数/月数/日数を 求めてあげれば上手くいくと思います。 |
|
投稿日時: 2006-02-28 15:31
ご返答有難うございます。
上記の例ですと、 結果が 264.053021206690561529271206690561529271 になり、 12で割ると年齢になるのはわかったのですが、 小数部での日の求め方がわかりません。 どうかよろしくお願いいたします。 |
|
投稿日時: 2006-02-28 16:49
リファレンスにも記載されていますが、小数部の値は1ヶ月を31日として計算された値です。
31を掛けて切り上げれば日数が求まるかと思います。 |
|
投稿日時: 2006-03-01 09:53
いーたさん返答ありがとうございます。
>リファレンスにも記載されていますが、小数部の値は1ヶ月を31日として計算された値です。 >31を掛けて切り上げれば日数が求まるかと思います。 すみません。リファレンスをよく読まなかったので・・・ これからは気をつけます。 ありがとうございました。 |
|
投稿日時: 2006-10-06 09:58
うるう日が誕生日の人は対象外なのね
バグを放置しちゃいけませんぜ |
|
投稿日時: 2006-10-07 20:24
http://biz.rivus.jp/functions/years_of_age.html
MONTHS_BETWEEN(P_BASEDATE,P_BIRTHDAY)/12 では 2/29 生まれの年齢が合わない。 |
1