[Lazarus-es] trabajando con horas

Paola Bruccoleri pbruccoleri en adinet.com.uy
Lun Oct 18 00:48:42 CEST 2010


  El 17/10/2010 07:34 p.m., José Mejuto escribió:
> Hello christian,
>
> Monday, October 18, 2010, 12:14:58 AM, you wrote:
>
>>> Select
>>>   Cast(secs/3600 - 0.499999999999 as INTEGER) as Hours,
>>>   Cast((secs - Cast(secs/ 3600 - 0.499999999999 as INTEGER)*3600)/ 60 -
>>> 0.499999999999 as INTEGER) as Minutes,
>>>   secs- (Cast(secs/3600 - 0.499999999999 as INTEGER)*3600+Cast((secs -
>>> Cast(secs/ 3600 - 0.499999999999 as INTEGER)*3600)/ 60 - 0.499999999999 as
>>> INTEGER)*60) as Seconds
>>>   from (
>>> select SUM(TIME_FIELD - cast('0:0' as time)) as secs
>>> from TTABLE )
>>>
>>> Se tiene que hacer tanta cosa en Firebird???? ya se que motor de bd no debo
> cO>  usar ....
>
> No hombre, es que los campos TIME no se pueden sumar, ni en Firebird
> ni en nada. Se soluciona fácilmente con una "stored procedure" o más
> fácil aún con una UDF. Eso es si se quiere hacer con un "select" sin
> más cosas.
>
> No puedes usar un campo TIME por que la suma puede pasar de 24 horas,
> límite máximo para la hora de TIME.
estaba mirando ahora la udf freeadhocudf, que tiene una funcion 
F_SECONDS2PERIOD que aunque no es exactamente lo que quiero, podría 
servirme y no logro que me la reconozca (coloqué la dll en la carpeta 
udf de firebird y reinicie el servidor). Las pruebas las hago usando 
ibexpert.

De todas formas, tb me sirve un store procedure, peor no he dado en la 
tecla..
chauuuuuuuuu





More information about the Lazarus-es mailing list