Commande MONTHS_BETWEEN - ORACLE

Fermé
Maxianos Messages postés 55 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 2 juin 2009 - 11 oct. 2008 à 18:31
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 - 12 oct. 2008 à 05:08
Bonjour,
j'ai un problème que je n'arrive pas à résoudre.. J'ai essayé des tas de combinaisons, mais rien n'y fait..

En fait, j'ai une colonne appelé "date_naiss" pour des employés.. Le problème est que je dois formater un rapport indiquant l'âge de l'employé et non sa date de naissance...
Ainsi, je peux utiliser la commande months_between(date 1, date 2) pour faire la différence entre une date et une autre...
La date de référence pour calculer l'âge n'est pas la date d'aujourd'hui, mais le 1er novembre 1999...
Ainsi voici ma requête..

select titre, nom, salaire, date_naiss
from s_employe
where titre != 'Manager' and date_debut > '30-MAR-90' and date_naiss = months_between('01-NOV-99', 'date_naiss')/12
order by titre, nom, salaire DESC;

Donc, la première date dans la fonction devrait normalement etre le date de référence... Puis la deuxième date s'agit de la date de naissance de chaque employé dans la table... Alors, dois-je mettre le nom de la table (comme j'ai fait), ou bien autre chose... Et comment doit-on ecrire...

Merci de votre aide!!
A voir également:

2 réponses

Maxianos Messages postés 55 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 2 juin 2009 3
12 oct. 2008 à 02:24
Ok bon, j'ai reussis a faire marcher ma requete, mais je n'obtiens pas ce que je veux, en fait j'obtient des ######### au lieu d'obtenir un nombre...

J'ai reussi a corriger ma commande...

select titre, nom, salaire, months_between (TO_DATE('01-NOV-99','DD-MON-YY'), TO_DATE(date_naiss,'DD-MON-YY')) "date_naiss"
from s_employe
where titre != 'Manager' and date_debut > '30-MAR-90'
order by titre, nom, salaire DESC;

Si vous savez pourquoi j'obtient que des ########, votre aide serait appréciez...
-1
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 oct. 2008 à 05:08
Salut,


Petite question, qu'affiche le résultat de la requête si tu select TO_DATE(date_naiss,'DD-MON-YY') tout court (donc sans l'employer dans la méthode months_between) ? C'est juste pour voir si ce n'est pas dû à un problème de format des dates de naissances stockées dans la table car s'il affiche déjà des ### à ce niveau là, le problème est ciblé.

Ensuite, je ne connais pas si bien que ça Oracle mais il me semble qu'il est préférable de mettre le mot clé "AS" lors de la définition d'un alias dans les noms de champs. J'en profite au passage pour préciser que le nom de ton alias est peut-être mal choisi car tu n'affiches plus la date de naissance mais la différence de dates exprimée en mois (bien qu'elle soit calculée sous forme fractionnaire).
-1