If given a unix timestamp, how do I determine which timezone to use (EST or EDT)? I'm trying to edit this function to automatically return the right time zone with the value passed.
Code:
CREATE OR REPLACE FUNCTION Unixts_To_Date(unixts IN PLS_INTEGER) RETURN DATE IS
/**
* Converts a UNIX timestamp into an Oracle DATE
*/
unix_epoch DATE := TO_DATE('19700101000000','YYYYMMDDHH24MISS');
max_ts PLS_INTEGER := 2145916799; -- 2938-12-31 23:59:59
min_ts PLS_INTEGER := -2114380800; -- 1903-01-01 00:00:00
oracle_date DATE;
BEGIN
IF unixts> max_ts THEN
RAISE_APPLICATION_ERROR(
-20901,
'UNIX timestamp too large for 32 bit limit'
);
ELSIF unixts <min_ts THEN
RAISE_APPLICATION_ERROR(
-20901,
'UNIX timestamp too small for 32 bit limit' );
ELSE
oracle_date := unix_epoch + (unixts/86400);
END IF;
RETURN NEW_TIME(oracle_date, 'GMT', 'EDT');
END;
/