Tato otázka je do značné míry opakem Convert Unixtime to Datetime SQL (Oracle)
Jak říká Justin Cave:
Nejsou zde žádné vestavěné funkce. Ale napsat to je relativně snadné. Protože časová značka Unixu je počet sekund od ledna 1,1970
Protože odečtením jednoho data od jiného data získáte počet dní mezi nimi, můžete udělat něco jako:
create or replace function date_to_unix_ts( PDate in date ) return number is
l_unix_ts number;
begin
l_unix_ts := ( PDate - date '1970-01-01' ) * 60 * 60 * 24;
return l_unix_ts;
end;
Jako v sekundách od roku 1970 je počet zlomkových sekund nepodstatný. Stále jej můžete volat s datovým typem časového razítka...
SQL> select date_to_unix_ts(systimestamp) from dual;
DATE_TO_UNIX_TS(SYSTIMESTAMP)
-----------------------------
1345801660
V reakci na váš komentář se omlouvám, ale toto chování nevidím:
SQL> with the_dates as (
2 select to_date('08-mar-12 01:00:00 am', 'dd-mon-yy hh:mi:ss am') as dt
3 from dual
4 union all
5 select to_date('08-mar-12', 'dd-mon-yy')
6 from dual )
7 select date_to_unix_ts(dt)
8 from the_dates
9 ;
DATE_TO_UNIX_TS(DT)
-------------------
1331168400
1331164800
SQL>
Rozdíl je 3 600 sekund, tj. 1 hodina.