3

1つの列で構成されるテーブルがあります(BIRTH_DATE)。sysdateを使用して、自分BIRTH_DATEGROUP BYそれらのすべての行から一緒に減算するにはどうすればよいですか?

より明確にするために:

これが私がフェッチしたものです。次に、すべての行について、以下のテーブルにAGE列を追加します。

ID     Birth_Date
___    ___________
1       02-JAN-63
2       23-OCT-31
3       30-DEC-35
4       06-MAY-83

前もって感謝します!

4

4 に答える 4

6

うるう年を考慮して、通常の基準(つまり、誕生から経過した暦年数)に従って人の年齢を取得するには、MONTHS_BETWEEN演算子を使用できます。

SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;
于 2012-10-15T06:22:50.593 に答える
5

birth_dateから減算するだけsysdateです:

select id, (sysdate - birth_date) / 365 age from my_table;

日付を引くと日数になるため、365で割ると小数年になります。

于 2012-10-12T16:04:01.507 に答える
3

SELECT TRUNC(months_between(SYSDATE、birthDate)/ 12)AS年齢

于 2018-11-24T17:03:17.763 に答える
3

おひさしぶりですね。お役に立てれば。

declare
   patAge int;
   patName patient.fname%type;
   cursor agePat is 
      SELECT fname, MONTHS_BETWEEN(sysdate, dob) / 12 age FROM patient;
begin
   open agePat;
   loop
      fetch agePat into patName, patAge;
      exit when agePat%notfound;
      dbms_output.put_line('Patient Age = ' || patAge || ' || Patient Name = ' || patName);
   end loop;
   close agePat;
end;
/

ここでのpatAgeは、年齢値を格納し、patNameは、テーブルに患者の名前の値を格納します。

@JeffreyKempソリューションをplsqlコードに変換しました。

于 2020-04-19T14:06:35.257 に答える