TransWikia.com

Sumar tiempos tipo TIME en MySQL

Stack Overflow en español Asked by Ignacio Fuentes on December 28, 2020

Tengo la siguiente consulta la cual me retorna tres datos tipo TIME, Siendo el ultimo NuevoTiempo una suma de los dos primeros datos

SELECT mvp_tomb.mvp_dead_time,
SEC_TO_TIME((mvp_alarm.mvp_respawn_start)*60) AS
RespawnMinuteToTime, ADDTIME(mvp_tomb.mvp_dead_time,
SEC_TO_TIME((mvp_alarm.mvp_respawn_start)*60)) AS NuevoTiempo FROM
mvp_tomb LEFT JOIN mvp_alarm ON mvp_alarm.mvp_location =
mvp_tomb.mvp_location

>Retorno: MVP_DEAD_TIME = 23:00:00
>RESPAWNMINUTETOTIME = 02:00:00
>NUEVOTIEMPO = 25:00.00 (ESTE ES MI PROBLEMA)

Necesito que esa suma entre esos dos time me devuelva un valor mas parecido a esto 01:00:00 por que si tengo una suma de 20:00:00 + 22:00:00 me va a devolver 42:00:00 lo cual no es lo que necesito si no que me devuelve 18:00:00

Alguien tiene una idea si existe alguna función sql que haga esa transformación o suma de manera que me quede bien formateada

One Answer

Lo he resuelto con un combinación de TIME(TIMESTAMP()) de esta forma:

SELECT *,TIME(TIMESTAMP(ADDTIME(t1,t2)))
  FROM (
    SELECT t1,SEC_TO_TIME(t2*60) t2
      FROM tiempo
  ) c1;

Para este dataset de prueba con los ejemplos que propones:

CREATE TABLE tiempo(
  id_tiempo int AUTO_INCREMENT PRIMARY KEY,
  t1 time,
  t2 int
  );

INSERT INTO tiempo (t1, t2) VALUES
('23:00:00',120),
('20:00:00',1320);

Y el resultado que esperas:

1 23:00:00    02:00:00    01:00:00
2 20:00:00    22:00:00    18:00:00

Déjame cualquier duda en los comentarios

Correct answer by David JP on December 28, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP