PHP différence entre MySql champs heure

  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Novembre 30th, 2011, 4:20 am

Bonjour à tous.

J'ai deux champs de temps dans ma base de données: « start_time » et « stop_time ». Ces champs de suivent le temps une machine a travaillé (hh:mm:ss). Il y a une page d'affichage où Id like pour afficher la différence de temps entre ces deux pour l'utilisateur. Soustrayant juste de l'autre donne « 0 ».

Tellement permet d'imaginer que :
PHP Code: [ Select ]
$start_time = '128:12:05';
$stop_time = '129:15:10';
  1. $start_time = '128:12:05';
  2. $stop_time = '129:15:10';


ID like afficher le texte suivant à l'utilisateur :
Machine x a travaillé à 01:03:05 aujourd'hui.

J'espère que quelqu'un peut aider.
Let's leave all our *plum* where it is and go live in the jungle ...
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Novembre 30th, 2011, 4:20 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Novembre 30th, 2011, 10:12 am

Je suis un peu confus sur la $start_time variables et $stop_time que vous avez il. Je pense qu'ils sont vraiment l'heure de début et la fin et ils suivre seulement le temps de qu'une machine a travaillé une fois que vous soustrayez eux correcte ?

Je pense que je suis confus est parce que les heures sont donc haute à l'heure de début et fin, qui le rend apparaissent ils accumulent en fait juste des heures, mais je ne sais pas.

J'ai besoin de quelques précisions, un peu, comme j'allais vous suggérons d'utiliser unix horodatages plutôt que ceux qui sont plus faciles à travailler avec moi.

En soustrayant les deux nombres vous donnent d'un 0 parce qu'ils ne sont pas des nombres réels, ils sont justes des chaînes. Ce serait comme soustrayant certains "peine" de « une autre peine ». Vous aurait probablement retrouver avec 0 là aussi bien.

Si vous souhaitez soustraire les nombres dans ce format, vous allez probablement besoin pour créer une fonction pour y faire face. Par exemple :

PHP Code: [ Select ]
function SubtractTime($start, $end) {
   list($startHours,$startMins,$startSecs) = explode(":", $start);
   list($endHours,$endMins,$endSecs) = explode(":", $end);
   return (sprintf("%02d", $endHours - $startHours) . ':' . sprintf("%02d", $endMins - $startMins) . ':' . sprintf("%02d", $endSecs - $startSecs));
}
  1. function SubtractTime($start, $end) {
  2.    list($startHours,$startMins,$startSecs) = explode(":", $start);
  3.    list($endHours,$endMins,$endSecs) = explode(":", $end);
  4.    return (sprintf("%02d", $endHours - $startHours) . ':' . sprintf("%02d", $endMins - $startMins) . ':' . sprintf("%02d", $endSecs - $startSecs));
  5. }
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Novembre 30th, 2011, 10:31 am

Après plus de recherche on réellement dirait MySQL dispose d'une fonction pour traiter avec soustrayant à temps. Si vous pourrait éviter complètement PHP sélectionnant simplement le temps comme celui-ci par exemple :

SQL Code: [ Select ]
SELECT SUBTIME('129:15:10','128:12:05');


Vous pouvez le voir a travaillé :

Code: [ Select ]
mysql> SELECT SUBTIME('129:15:10','128:12:05');
+----------------------------------+
| SUBTIME('129:15:10','128:12:05') |
+----------------------------------+
| 01:03:05             |
+----------------------------------+
1 row in set (0.01 sec)
  1. mysql> SELECT SUBTIME('129:15:10','128:12:05');
  2. +----------------------------------+
  3. | SUBTIME('129:15:10','128:12:05') |
  4. +----------------------------------+
  5. | 01:03:05             |
  6. +----------------------------------+
  7. 1 row in set (0.01 sec)


Vous pouvez utiliser à la place des champs sélectionnés, mais ci-dessus fonctionne aussi bien si vous codez le temps comme moi.

Ainsi, il semble que vous avez maintenant deux options, par l'intermédiaire de PHP et par l'intermédiaire de MySQL;)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Mar 12, 2007
  • Messages: 6228
  • Loc: South-Africa
  • Status: Offline

Message Décembre 1st, 2011, 11:16 pm

Ah, merci beaucoup, c'est ce que je recherchais, la version de MySql sera mieux pour moi.

Et Ouais, c'est un rapport quotidien qui doit être rempli et fera le suivi juste combien d'heures une machine a travaillé. Si oui, j'ai juste suivre heures.
Let's leave all our *plum* where it is and go live in the jungle ...

Afficher de l'information

  • Total des messages de ce sujet: 4 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 239 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC