CALCUL DE DONNEES ENTRE DEUX DATES

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : CALCUL DE DONNEES ENTRE DEUX DATES

Re: CALCUL DE DONNEES ENTRE DEUX DATES

par niuxe » 08 janv. 2014, 17:00

Salut,
voici mon MCD ci-joint
Je ne le vois pas sur le forum.

Ce que j'ai cru comprendre (car ton explication n'est pas clair), tu as en base des lignes avec date_debut et date_fin ? A partir de là, c'est pas difficile. Tu extrais la date de début et la date de fin. Ensuite tu convertis ces données en timestamp. Tu soustrais le timestamp de la date de début au timestamp de la date de fin. Ca te donnera la différence en secondes. Tu n'as plus qu'à diviser par 3600 (nombre de secondes par heure) pour connaitre le nombre d'heure de différences. Si tu veux connaitre le nombre de jours, tu divises par 3600 * 24.

J'ai bien compris que tu fais du windev. Cependant, en windev ou php ou Python ou etc., je suis sûr que ça reste relativement la même chose :
<?php

	$hier = mktime(0,0,0,1,7,2014);
	$maintenant = time();
	
	$dif = $maintenant - $hier;
	
	echo $dif / 3600;
 
?>
Sinon avec MySql, tu peux obtenir un résultat équivalent en utilisant les fonctions (voir mieux):
- DATEDIFF(date-fin,date-debut)
- TIMESTAMPDIFF(unite-de-mesure,date-fin,date-debut)

Regarde si dans ta base tu as ces petites fonctions supplémentaires.

Pour ton cas, ça devrait donner un truc comme (fait de tête, je peux me tromper, mais je te mets sur la piste) :
SELECT 
	TIMESTAMPDIFF(DAY, unetable.date_debut, unetable.date_fin) AS nb_jours,
	TIMESTAMPDIFF(HOUR,unetable.date_debut, unetable.date_fin) AS nb_heures
FROM 
	unetable
Cette requête peut être grandement améliorée. Là, elle te donnera le nombre d'heures différence au total. Au lieu d'avoir 36 heures par exemple, tu voudrais surement voir 1 jour et 12 heures. Il te suffit d'améliorer cette expression sql pour avoir quelque chose de plus propre.

CALCUL DE DONNEES ENTRE DEUX DATES

par fokher » 08 janv. 2014, 10:08

Bonjour à tous.

S'il vous plait je développe en windev et utilise hyperfile comme sgbd mais avec des requêtes en sql.
Mon application devrais géré le suivi de la production dans une entreprise industrielle. Ma difficulté est que j'aimerais calculé le nombre total d'heure d'arrêt par nature de défaut et par machine pendant une durée (date_debut et date_fin par exemple). En bref il y a des machines qui fabriquent des produits et peuvent tomber en panne entrainant des heures d'arrêt.
voici mon MCD ci-joint et mes deux requêtes que je n'arrive pas à joindre (l'une me donne le nombre total d'heure d'arret par machine et l'autre le nombre total d'heure par nature de défaut):

* requête par machine:
SELECT DISTINCT(machine.nom_machine),SUM(ligne_machine.heure_arret) AS HEURE
FROM ligne_machine,machine,defauts
WHERE (ligne_machine.IDmachine=machine.IDmachine) //AND (ligne_machine.IDdefauts=ligne_machine.IDdefauts)
GROUP BY machine.nom_machine

requête par nature:
Code :Sélectionner tout - Visualiser dans une fenêtre à part
SELECT DISTINCT(defauts.nature),SUM(ligne_machine.heure_arret) AS HEURE
FROM ligne_machine,defauts
WHERE (ligne_machine.IDdefauts=defauts.IDdefauts) //AND ligne_machine.date_heure_arret BETWEEN ligne_machine.date_debut AND ligne_machine.date_fin
GROUP BY defauts.nature