PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

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

#1 Re : MySQL, PostgreSQL, etc... » Difference pour deux dates consecutives » 05-02-2013 20:39:08

Merci bcp pour ta réponse. c'est super sympa !!!!!!!!
Je ne comprends pas pourquoi tu as mis des zeros dans toute les colonnes 'empan' ? Le resultat 10000.000000:

id Décroissant      temps                     proche                    ecart
20                  2013-02-06 14:18:02       2013-02-06 13:18:02       10000.000000

est bizarre ....ce devrait être ZERO ?

Je pense que c'est proche de ce que je veux faire mais au lieu des ZEROS, j'ai diverses valeurs ( qui sont renseignée par un CRON qui remplis la base heure après heure ....cela vient de capteurs) : exemple :
(1, '2013-02-05 19:18:02', 125), (2, '2013-02-05 20:18:02', 158),(3, '2013-02-05 21:18:02', 166),(4, '2013-02-05 22:18:02',181)......etc.....
donc je devrais avoir les diff:
125 - 0
158 - 125
166-158
181-166
etc......


Et j'aurai souhaité injecter le résultat dans une colonne de la même table ......ou même dans une autre table qui reprends la dernière date et l'écart .
Merci de ton aide

#2 Re : MySQL, PostgreSQL, etc... » Difference pour deux dates consecutives » 05-02-2013 20:39:08

Bonjour et merci pour ta réponse.
Cependant je suis novice et ne suis pas a l'origine du script que j'ai juste adapté pour mes besoins.
Quelles seraient les lignes à ajouter pour avoir les differences entre deux lignes consecutives sachant que je souhaites pouvoir avoir cette difference stockés dans la base .
Les valeurs de la colonne "time" sont renseignées par un cron qui envoie toute les heures la valeur.

Merci d'avance pour les lignes de scripts......

Cordialement

#3 MySQL, PostgreSQL, etc... » Difference pour deux dates consecutives » 05-02-2013 20:39:08

johndoe2011
Réponses : 5

Bonjour,
Je suis débutant en BDD mysql mais souhaiterais avoir un peu d'aide pour une requête simple.
J'ai la base de donnée suivante:
http://imageshack.us/a/img24/8821/basedd.png

Ce que je souhaite avoir c'est une colonne (par ex nommé diff) avec la différence entre les valeurs de la colonne "value" pour la dernière date/time et celle juste avant.
Exemple :

2013-1-27 16:01:01 50393 152
2013-1-27 17:01:01 50542 149

J'ai le script actuel pour remplir la base en temps réel:


//
$ipx800v3='tablegaz'; //Table
//
//Lecture du fichier XML
$xml = read_xml("http://$usernameIPX:$passwordIPX@192.168.123.130/status.xml","response",array("day","time0","count0"));
foreach($xml as $row)
{
$day=$row[0];
$time0=$row[1];
//changement en heure locale:
$time0=date('H:i:s',gmmktime($time0));
$count0=$row[2];
}
$date=date("Y-m-d");
//
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur $host");
mysql_select_db($db) or die("erreur de connexion à la base de données");
//
//Transfert des données de l'IPX800 V3 dans la BDD
//------------------------------------------------
$last_date=explode('-',$date);
$last_time=explode(':',$time0);
$dateXML=mktime($last_time[0],$last_time[1],0,$last_date[1],$last_date[2],$last_date[0]);
//Date du dernier enregistrement sur les entrées compteurs dans la BDD
$request="SELECT id,date,time FROM $ipx800v3 ORDER BY id DESC LIMIT 1";
$mysql_query=mysql_query($request) or die ('Erreur SQL ! '.$request.'<br/>'.mysql_error());
$last_record=mysql_fetch_array($mysql_query);
$dateDB=explode('-',$last_record[1]);
$timeDB=explode(':',$last_record[2]);
$update=1; //Mise à jour de la base toutes les 1 minutes
$date_recordDB=mktime($timeDB[0],$timeDB[1]+$update,0,$dateDB[1],$dateDB[2],$dateDB[0]);
if ($dateXML>$date_recordDB)
{
//Ecriture dans la BDD
$request="INSERT INTO $ipx800v3 VALUE('','$date','$time0','$count0')";
mysql_query($request) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
mysql_close();

Question :
Je souhaiterais ajouter la colonne "diff" et la remplir en temps grâce au script modifié .
Merci de votre aide pour modifier ce script/requête

Pied de page des forums

Propulsé par FluxBB