Vous n'êtes pas identifié(e).

#1 29/03/2012 15:28:20

mollux78
Membre

Requête

J'ai une requête sous postgres :

select distinct a.application,j.job, j.cycle, j.cyclique, j.utilisateur, j.machine, h.date_debut, 24*3600*(to_date(h.date_fin,'DD-MM-YYYY HH24:MI:SS')-to_date(h.date_debut,'DD-MM-YYYY HH24:MI:SS')) as duree, h.statut from t_application a, t_job j, t_histo_stat h where to_date(h.date_fin,'DD-MM-YYYY HH24:MI:SS') between LOCALTIMESTAMP - interval '2 day' and LOCALTIMESTAMP + interval '0 day' and h.environnement ='SIE-VALO-FACTU' and a.application = h.appli and j.job = h.job and j.id_domaine = 1 and a.id_environnement_ora = j.id_environnement_ora and a.id_application_ora = j.id_application_ora and h.statut != 'NON-PLANIFIE' and h.date_fin != h.date_debut order by a.application, j.job, h.date_debut;

le champ durée me donne une valeur entière 0 ou 1. Alors qu'en oracle, j 'avais le champ durée avec des 0,03... ETC
COmment est il possible de formater dans ma requête le champ durée pour avoir des chiffres à la virgule ?

Hors ligne

#2 29/03/2012 17:15:03

gleu
Administrateur

Re : Requête

duree est construit ainsi 24*3600*(to_date(h.date_fin,'DD-MM-YYYY HH24:MI:SS')-to_date(h.date_debut,'DD-MM-YYYY HH24:MI:SS'))

Comme l'indique http://docs.postgresql.fr/9.1/functions-datetime.html, une date (type du résultat de la fonction to_date) soustrait à une date (là-aussi type du résultat de la fonction to_date) donne un entier. Un entier multiplié à un entier donne un entier. Donc le résultat est forcément un entier. Faire une conversion en flottant ou forcer l'affichage de chiffre après la virgule n'y changera rien.


Guillaume.

Hors ligne

Pied de page des forums