SQL
CREATE OR REPLACE FUNCTION "DATAHORA" (data IN DATE,hora IN FLOAT, f IN INTEGER DEFAULT 0)
RETURN TIMESTAMP
AS
resultat TIMESTAMP;
cadena VARCHAR(20);
h INTEGER;
m INTEGER;
BEGIN
/* Donada una data i una hora en format decimal, tornar un TIMESTAMP
f=0 La hora es en format sexagimal
f=1 La hora es en format centesimal
*/
cadena:=REPLACE(TO_CHAR(hora,'FM00D00'),'.','');
h:=TO_NUMBER(SUBSTR(cadena,1,2),'00');
m:=TO_NUMBER(SUBSTR(cadena,3,2),'00');
if f=1 then
m:=m*60/100;
else
if m>=60 THEN
m:=59;
end if;
end if;
cadena:=TO_CHAR(data,'YYYYMMDD')||TO_CHAR(h,'00')||TO_CHAR(m,'00');
RETURN TO_TIMESTAMP(cadena, 'YYYYMMDDHH24MI');
END;