3 votes

PL/SQL : Comment puis-je calculer l'AGE en connaissant une colonne appelée Birth_Date ?

J'ai un tableau composé d'une colonne (BIRTH_DATE) . Comment pourrais-je utiliser sysdate pour soustraire de toutes les lignes de mes BIRTH_DATE y GROUP BY ensemble ?

pour être plus clair :

Voici ce que j'ai récupéré, maintenant je voudrais ajouter une colonne AGE à la table ci-dessous pour toutes les lignes.

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

Merci d'avance !

6voto

Jeffrey Kemp Points 26050

Pour obtenir l'âge d'une personne selon le critère habituel (c'est-à-dire selon le nombre d'années civiles écoulées depuis sa naissance), en tenant compte des années bissextiles, vous pouvez utiliser l'opérateur MONTHS_BETWEEN :

SELECT id, MONTHS_BETWEEN(sysdate, birth_date) / 12 age FROM my_table;

5voto

Wolf Points 3179

Il suffit de soustraire birth_date de sysdate :

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

En soustrayant des dates, on obtient le nombre de jours. Ainsi, en divisant par 365, on obtient des années décimales.

3voto

Francisco Coenda Points 110

SELECT TRUNC(mois_entre(SYSDATE, date de naissance) / 12) AS âge

3voto

Serum Points 193

Cela fait longtemps que cela dure. J'espère que cela vous aidera.

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 sert à stocker la valeur de l'âge et patName à stocker la valeur du nom du patient dans la table.

J'ai transformé la solution de @JeffreyKemp en code pl sql.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X