この質問は、UnixtimeをDatetime SQLに変換する(Oracle)の逆です
ジャスティン洞窟が言うように:
組み込み関数はありません。しかし、書くのは比較的簡単です。 Unixタイムスタンプは、1970年1月1日からの秒数であるため
ある日付を別の日付から引くと、それらの間の日数が増えるため、次のようなことができます。
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;
秒のように 1970年以降、小数秒の数は重要ではありません。ただし、タイムスタンプデータ型を使用して呼び出すことはできます...
SQL> select date_to_unix_ts(systimestamp) from dual;
DATE_TO_UNIX_TS(SYSTIMESTAMP)
-----------------------------
1345801660
あなたのコメントに応えて、申し訳ありませんが、その振る舞いはわかりません:
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>
3,600秒の差、つまり1時間あります。