PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 Re : Général » Agrégat sur des intervals » 24/03/2020 09:25:10

Il faut ajouter HH24 sinon...  pour une durée de 00:21:07
- avec HH  on obtient                                           0 mois 00 jours 12 heures 21 min 07 sec
- avec HH24 on obtient la bonne transcription :      0 mois 00 jours 00 heures 21 min 07 sec

Encore merci pour vos retours smile

#2 Re : Général » Agrégat sur des intervals » 23/03/2020 18:16:16

je me réponds ...
Pour avoir les mois , j'ai remplacé Justify_hours par justify_interval  et j'ai rajouté un to_char pour avoir ma durée en mois, jours etc ...
Qu'en pensez vous ?

select to_char(justify_interval( ('23-03-2020 16:00'::timestamp - '19-01-2020 06:30'::timestamp) +
 ('19-03-2020 06:29'::timestamp - '15-01-2020 06:30'::timestamp)),'mm "mois" DD "jour(s)" HH "heure(s)" MI "min"' );

Ca à l'air d'être correct smile et en plus j'ai ma durée en français ! smile

#3 Re : Général » Agrégat sur des intervals » 23/03/2020 17:50:33

Encore un petite question est ce qu'on peut avoir la durée sous forme de d'année, mois , jour heure minute ?
exemple 0 year 3 month 12 days 02:30:10

#4 Re : Général » Agrégat sur des intervals » 23/03/2020 17:45:30

Super ! merci beaucoup ! Ca fait depuis ce matin que je cherche ! smile
Portez vous bien !

#5 Re : Général » Agrégat sur des intervals » 23/03/2020 17:34:28

Bonjour et merci pour votre réponse rapide  wink
la requête fonctionne bien, mais ce n'est pas une requête avec un agrégat (sum) , comme dans mon exemple ...

#6 Général » Agrégat sur des intervals » 23/03/2020 16:54:08

Olivier MAMDY
Réponses : 10

Bonjour à tous
Je cherche à calculer sur une période, le temps d’indisponibilité d'engins, en faisant la somme des durées d'indisponibilité (agrégat);
La durée d'indisponibilité est calculée avec avec  la date de fin arret -  la date de début d'arret  (les 2 champs sont au format timestamp)
voici mon code sql

 SELECT arret.id_bacs, 
	EXTRACT(YEAR FROM arret.date_debut_arret) AS Année, 
	EXTRACT(MONTH FROM arret.date_debut_arret) AS Mois,
    count(arret.id_arret) AS nbreArret, 
    sum(arret.date_fin_arret -  arret.date_debut_arret) as Duree,
    ta.arret_cause
   FROM arret, type_arret ta
  WHERE arret.id_type_arret = ta.id_type_arret and arret.id_bacs = 2
  GROUP BY arret.id_bacs, année,mois,ta.arret_cause
  ORDER BY arret.id_bacs,année desc;

la requête fonctionne, mais j'ai certains résultats pour ma durée qui apparaissent comme ceci:  7 days 33:30:10 ... la somme s'effectue bien , mais on constate que les heures n'ont pas été transformées en  jours ... le bon résultats aurait dû être : 8 days 09:30:10 Non ?

PS ... Peut-on transformer le résultat en français ? 7 jours 09:30:10

Pied de page des forums

Propulsé par FluxBB