PHP diferencia entre MySql campos hora

  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Noviembre 30th, 2011, 4:20 am

Hola a todos.

Tengo dos campos de tiempo en mi base de datos: "start_time" y "stop_time". Estos campos pista el tiempo trabajado de una máquina (HH). Hay una página de vista donde Id como para mostrar la diferencia de tiempo entre estos dos para el usuario. Restando unos de otros sólo da "0".

Por lo tanto permite imaginar:
PHP Código: [ Select ]
$start_time = '128:12:05';
$stop_time = '129:15:10';
  1. $start_time = '128:12:05';
  2. $stop_time = '129:15:10';


Identificación como mostrar las siguientes opciones para el usuario:
Máquina x trabajó 1:03:05 hoy.

Ojalá alguien puede ayudar.
Let's leave all our *plum* where it is and go live in the jungle ...
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Noviembre 30th, 2011, 4:20 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Noviembre 30th, 2011, 10:12 am

Estoy un poco confundido sobre el $start_time variables y $stop_time que tienes allí. ¿Pienso que son realmente la hora de inicio y la hora de finalización y sólo realizar un seguimiento del tiempo que una máquina ha trabajado una vez que se les reste correcta?

Creo que la razón que estoy confundido es porque las horas son por lo alto en la hora de inicio y hora de finalización, que hace aparecer realmente sólo acumulan horas, pero no estoy seguro.

Necesito aclarar algo un poco, como iba a sugerir utilizar marcas de tiempo unix en cambio como los que son más fáciles de trabajar en mi opinión.

Restarlos dos números dan un 0 porque no son números reales, son solo cadenas. Sería como restando "alguna frase" de "otra frase". Lo haría probablemente terminan con 0 allí también.

Si desea Restar números en ese formato vas a probable necesidad de crear una función para hacerle frente. Por ejemplo:

PHP Código: [ 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 Usuario
  • Registrado: Dic 20, 2002
  • Mensajes: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Nota Noviembre 30th, 2011, 10:31 am

Después de una investigación que realmente parece MySQL tiene una función para tratar de restar tiempo. Así podría evitar PHP totalmente seleccionando simplemente el tiempo como por ejemplo:

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


Puede ver funcionó:

Código: [ 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)


En su lugar se utilice campos seleccionados, pero lo anterior funciona como bien si le Guarde el tiempo como yo lo hice.

Así que parece que tienes dos opciones, a través de PHP y a través de MySQL ahora;)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • righteous_trespasser
  • Scuffle
  • Genius
  • Avatar de Usuario
  • Registrado: Mar 12, 2007
  • Mensajes: 6228
  • Loc: South-Africa
  • Status: Offline

Nota Diciembre 1st, 2011, 11:16 pm

Ah, gracias, que es lo que yo buscaba, la versión de MySql será mejor para mí.

Y sí, este es un informe diario que debe rellenarse y sólo realizará un seguimiento cuántas horas ha trabajado una máquina. Así que sí, sólo pista horas.
Let's leave all our *plum* where it is and go live in the jungle ...

Publicar Información

  • Total de mensajes en este tema: 4 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 194 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC