Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

suma campos time

Estas en el tema de suma campos time en el foro de Bases de Datos General en Foros del Web. hola amigos mi consulta es la siguiente: Necesito sumar los datos de una columna time de una base de datos mysql pero necesito hacerlo con ...
  #1 (permalink)  
Antiguo 02/08/2010, 10:53
 
Fecha de Ingreso: febrero-2010
Ubicación: Santiago
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta suma campos time

hola amigos
mi consulta es la siguiente:

Necesito sumar los datos de una columna time de una base de datos mysql
pero necesito hacerlo con una sentencia en lenguaje sql. De antemano gracias
  #2 (permalink)  
Antiguo 02/08/2010, 10:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: suma campos time

SQL es un estandar. Todos los DBMS lo interpretan igual, pero el ANSI SQL no cuenta con todas las funcionalidades por lo que los diferentes DBMS implementan algunas cosas para sí mismos. El problema es quue diferentes DBMS implementan las mismas funciones de diferente forma.
Para que se entienda: Todos los DBMS tienen funciones para hacer lo que quieres, pero no todas las funciones de manejo de fecha y hora son iguales entre SQL Server, Oracle, DB2, Postgre, MySQL, Firebird, Sybase o SQLite, por citar solamente algunos.
¿En cuál vas a realizar la tarea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 02/08/2010 a las 11:11
  #3 (permalink)  
Antiguo 02/08/2010, 11:03
 
Fecha de Ingreso: febrero-2010
Ubicación: Santiago
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: suma campos time

Cita:
Iniciado por gnzsoloyo Ver Mensaje
SQL es un estandar. Todos los DBMS lo interpretan igual, pero el ANSI SQL no cuenta con todas las funcionalidades por lo que los diferentes DBMS implementan algunas cosas para sí mismos.El problema es quue diferentes DBMS implementan las mismas funciones de diferente forma.
Para que se entienda: Todos los DBMS tienen funciones para hacer lo que quieres, pero no todas las funciones de manejo de fecha y hora son iguales entre SQL Server, Oracle, DB2, Postgre, MySQL Firebird Sybase o SQLite, por citar solamente algunos.
¿En cuál vas a realizar la tarea?
Gracias por responder, la DB es Mysql y la columna a sumar es del tipo "TIME"
  #4 (permalink)  
Antiguo 02/08/2010, 11:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: suma campos time

Cita:
Gracias por responder, la DB es Mysql y la columna a sumar es del tipo "TIME"
Necesitaríamos más información, porque hay que saber si vas a realizar un total de un horario, como por ejemplo el horario de trabajo de un empleado), o vas simplemente a sumar una cantidad de tiempo a un a hora ya obtenida.
En el primer caso es mejor usar varias funciones combinadas, y hay que tener en cuenta que la sumatoria no puede dar más de 383 horas. En el segundo se usa una sola función.
Caso 1: Requieres el horario de entrada-salida en sendos DATETIME y además se suman por cada ocurrencia del mismo empleado:
Código MySQL:
Ver original
  1. SELECT idEmpleado, SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(HoraSalida, HoraEntrada)))) TotalHoras
  2. FROM tabla
  3. GROUP BY idEmpleado;

Segundo caso: Sumar dos horas o unidades:
Código MySQL:
Ver original
  1. SELECT ADDTIME(HoraEntrada, horasAsumar);

Ppor mas funciones: 12.5. Funciones de fecha y hora
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/08/2010, 11:32
 
Fecha de Ingreso: febrero-2010
Ubicación: Santiago
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: suma campos time

gracias ya lo hice, revise en el manual de mysql del cual ocupe dos funciones y me esta funcionando a la perfeccion mira y es asi de simple


SUM(HOUR(horas_trabajadas)) AS trabajadas




de todas forma se agradece tu interes


  #6 (permalink)  
Antiguo 02/08/2010, 12:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: suma campos time

Eso te suma horas trabajadas completas, si lo que contiene horas_trabajadas es una hora como unidad de medida y no una hora como hora del día.
Si el campo guarda las horas como horas y minutos trabajados, puede darse este caso:
Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla t;
  2. +-----------------+
  3. | horas_trabajada |
  4. +-----------------+
  5. | 00:55:00        |
  6. | 00:55:00        |
  7. | 01:05:00        |
  8. | 01:09:00        |
  9. | 01:09:00        |
  10. | 01:11:00        |
  11. | 01:49:00        |
  12. | 00:59:00        |
  13. | 01:08:00        |
  14. | 01:08:00        |
  15. | 00:58:00        |
  16. | 01:11:00        |
  17. +-----------------+
  18. 12 rows in set (0.00 sec)
Si lo sumo con tu propuesta:
Código MySQL:
Ver original
  1. mysql> SELECT SUM(HOUR(horas_trabajada)) TotalHoras FROM tabla;
  2. +------------+
  3. | TotalHoras |
  4. +------------+
  5. |          8 |
  6. +------------+
  7. 1 row in set (0.00 sec)
Pero si sumo los segundos y luego obtengo las horas completas:
Código MySQL:
Ver original
  1. mysql> SELECT HOUR(SEC_TO_TIME(SUM(TIME_TO_SEC(horas_trabajada)))) TotalHoras
  2.     -> FROM Tabla;
  3. +------------+
  4. | TotalHoras |
  5. +------------+
  6. |         13 |
  7. +------------+
  8. 1 row in set (0.00 sec)
Como verás, hay cinco horas de diferencia en las sumas, Producto de las fracciones de hora.

Es para tener en cuenta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, suma, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.