- PR -

Oracleでの年齢計算について。

1
投稿者投稿内容
V101
会議室デビュー日: 2006/02/28
投稿数: 3
投稿日時: 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
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2006-02-28 15:23
MONTHS_BETWEEN関数で返ってきた値は整数部が月数、小数部が日数に相当する値だったはずです。
ですのでTRUNC関数で小数部を切り捨てずに、まずはそのまま値を取得して年数/月数/日数を
求めてあげれば上手くいくと思います。
V101
会議室デビュー日: 2006/02/28
投稿数: 3
投稿日時: 2006-02-28 15:31
ご返答有難うございます。

上記の例ですと、
結果が
264.053021206690561529271206690561529271
になり、
12で割ると年齢になるのはわかったのですが、
小数部での日の求め方がわかりません。

どうかよろしくお願いいたします。

いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2006-02-28 16:49
リファレンスにも記載されていますが、小数部の値は1ヶ月を31日として計算された値です。
31を掛けて切り上げれば日数が求まるかと思います。
V101
会議室デビュー日: 2006/02/28
投稿数: 3
投稿日時: 2006-03-01 09:53
いーたさん返答ありがとうございます。

>リファレンスにも記載されていますが、小数部の値は1ヶ月を31日として計算された値です。
>31を掛けて切り上げれば日数が求まるかと思います。
すみません。リファレンスをよく読まなかったので・・・
これからは気をつけます。

ありがとうございました。
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-10-06 09:58
うるう日が誕生日の人は対象外なのね
バグを放置しちゃいけませんぜ
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-10-07 20:24
http://biz.rivus.jp/functions/years_of_age.html
MONTHS_BETWEEN(P_BASEDATE,P_BIRTHDAY)/12 では 2/29 生まれの年齢が合わない。
1

スキルアップ/キャリアアップ(JOB@IT)