यह प्रश्न काफी हद तक Unixtime को डेटाटाइम SQL (Oracle) में कनवर्ट करने के विपरीत है
जैसा कि जस्टिन केव कहते हैं:
<ब्लॉकक्वॉट>कोई अंतर्निहित कार्य नहीं हैं। लेकिन किसी को लिखना अपेक्षाकृत आसान है। चूंकि यूनिक्स टाइमस्टैम्प 1,1970 के बाद से सेकंड की संख्या है
एक तारीख को दूसरी तारीख से घटाने पर उनके बीच के दिनों की संख्या में आप कुछ ऐसा कर सकते हैं:
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 घंटा।