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

[SOLUCIONADO] funcion mysql para convertir un numero entero milisegundo a formato TIME(2)

Estas en el tema de funcion mysql para convertir un numero entero milisegundo a formato TIME(2) en el foro de Mysql en Foros del Web. Hola comunidad. quiero convertir un valor decimal(milisecond) a formato time. por ejemplo: 21632.09727626459 a formato 00:00:21.63 uso esta query: select convert(21632.09727626459,time(2)) pero el resultado es: ...
  #1 (permalink)  
Antiguo 01/12/2014, 15:39
 
Fecha de Ingreso: noviembre-2014
Mensajes: 26
Antigüedad: 9 años, 5 meses
Puntos: 0
Pregunta funcion mysql para convertir un numero entero milisegundo a formato TIME(2)

Hola comunidad.
quiero convertir un valor decimal(milisecond) a formato time.
por ejemplo:

21632.09727626459 a formato 00:00:21.63

uso esta query:

select convert(21632.09727626459,time(2))

pero el resultado es:

02:16:32.10

Imagino que en alguna parte debo definir que mi numero decimal esta en milisecond:

Agradeceria una mano por favor. Gracias

Última edición por micheldefrancisco; 02/12/2014 a las 10:09
  #2 (permalink)  
Antiguo 02/12/2014, 15:17
 
Fecha de Ingreso: noviembre-2014
Mensajes: 26
Antigüedad: 9 años, 5 meses
Puntos: 0
De acuerdo Respuesta: funcion mysql para convertir un numero entero milisegundo a formato TIME(2

aqui les dejo la respuesta, yo mismo me respondi:
soy mas programador plsql, pero no se si en mysql exista una funcion que realice esta operacion, por lo tanto decidi hacer una funcion en mysql que me genere a partir de un valor numerico (milisegundo) un tipo de dato con formato TIME(2):

Si alguien tiene una mejor solucion, que la comparta por favor:

DELIMITER $$

CREATE FUNCTION `mydb`.`conversor_second` (p_milisecond int)

RETURNS varchar(50)

BEGIN

declare hr int(2) zerofill ;
declare min int(2) zerofill ;
declare sec int(2) zerofill ;
declare seg_ini int;
declare milisecond int;

set seg_ini = floor(p_milisecond/1000);

set hr = floor(seg_ini/3600);
set min = floor((seg_ini-(hr*3600))/60);
set sec = seg_ini-(hr*3600)-(min*60);

set milisecond = LEFT((p_milisecond/1000 MOD 1) * POW(10, (LENGTH(p_milisecond/1000 MOD 1)-2)),2);


RETURN CONCAT(hr,':',min,':',sec,'.',milisecond);

END

Hacemos la prueba:

select conversor_second(25698) AS 'Formato Time(2)';

Affichage:

00:00:25.69


Buenos dias...

Última edición por micheldefrancisco; 02/12/2014 a las 15:44

Etiquetas: formato, select, 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 04:18.