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 JOINmvp_alarm
ONmvp_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
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP