La funzione SecondsSinceFromTimestamp in IBM- DataStage:
SecondsSinceFromTimestamp(DATA_INIZIO_EVENTO, DATA_FINE_EVENTO)
effettua una differenza tra due timestamp
in secondi.
Da documentazione IBM:
La funzione che è stata creata ha lo stesso nome di quella presente in IBM-DS.
Da notare che la funzione presente in IBM - Datastage non effettua una differenza non tra END_DATE - START_DATE ma al contrario effettua una differenza tra la START_DATE - END_DATE per cui se consideriamo la differenza di un giorno tra start ed end avremo come risultato -86400, come indicato da documentazione IBM-DS.
Il valore come si vede è negativo -86400 secondi.
Se eseguiamo in oracle la funzione presente sotto avremo come risultato final -86400.
---------------------------------------------------------------------------------------------------------
create or replace
FUNCTION SecondsSinceFromTimestamp
(start_time_in
TIMESTAMP, end_time_in TIMESTAMP)RETURN NUMBER
AS
l_days NUMBER;
l_hours NUMBER;
l_minutes NUMBER;
l_seconds NUMBER;
sec_tot NUMBER;
BEGIN
SELECT
EXTRACT(DAY FROM start_time_in - end_time_in)
, EXTRACT(HOUR FROM start_time_in - end_time_in)
, EXTRACT(MINUTE FROM start_time_in - end_time_in)
, extract(SECOND FROM start_time_in - end_time_in)
INTO l_days, l_hours, l_minutes, l_seconds
FROM dual;
sec_tot := l_seconds + l_minutes*60 + l_hours*60*60 +
l_days*24*60*60;
RETURN sec_tot;
END;