If you’ll ever need to get the current Linux time from Oracle then you might be interested in the following solution. First of all, the Linux epoch time is expressed as the number of seconds since 1970-01-01 00:00:00 UTC and can be obtain by using the date +'%s'
command. For example:
oracle@oxg:~$ date +'%s'
1213261534
From Oracle you can use the following custom function:
create or replace function current_linux_date return integer is
l_crr_date timestamp(9) := SYS_EXTRACT_UTC(systimestamp);
l_ref_date timestamp(9) := to_date('01011970', 'ddmmyyyy');
l_seconds integer;
begin
l_seconds := extract(day from (l_crr_date - l_ref_date)) * 24 * 3600 +
extract(hour from (l_crr_date - l_ref_date)) * 3600 +
extract(minute from (l_crr_date - l_ref_date)) * 60 +
extract(second from (l_crr_date - l_ref_date));
return(l_seconds);
end current_linux_date;
/
Now, you should get the same result from Oracle:
SQL> select current_linux_date from dual;
CURRENT_LINUX_DATE
------------------
1213261993
oracle@oxg:~$ date +'%s'
1213261993
Have fun!
No comments:
Post a Comment