दिलचस्प पोस्ट
टैबब्लॉक बनाम टैबब्लॉक PHP के साथ सीएसवी फ़ाइल बनाना सूचियों में डुप्लिकेट निकालना सामग्री प्रकार के लिए प्रतिक्रिया निकाय को क्रमबद्ध करने में विफल "एफएस" / "जीएस" रजिस्टर क्या है? Re.sub मेरे लिए काम नहीं कर रहा है कैसे वेबकिट को मेरी सी / सी + + / Win32 अनुप्रयोग में एम्बेड करें? एक पायथन स्क्रिप्ट के भीतर से UAC उन्नयन का अनुरोध करें? माउंटेन शेर आरवीएम 1.8.7 एक्स 11 त्रुटि स्थापित करें Windows Server 2008 x64 के शीर्ष पर Excel 2007 स्वचालन addClass हर nth रनटाइम पर एक प्रकार का डिफ़ॉल्ट मान आर doParallel 'foreach' में कार्य नहीं मिला – {: कार्य 1 में त्रुटि विफल – "फ़ंक्शन" रेस्टर "" नहीं मिल सका "" – संकलन के लिए केवल -एड-मॉड्यूल PHP इको लाइन ब्रेक

ओरेकल एसक्यूएल में 2 तारीख / बार के बीच अंतर की गणना करें

मेरे पास टेबल है:

Filename - varchar Creation Date - Date format dd/mm/yyyy hh24:mi:ss Oldest cdr date - Date format dd/mm/yyyy hh24:mi:ss 

ओरेकल एसक्यूएल में दो तिथियों के बीच घंटे और सेकंड (और संभवतया दिनों) में अंतर कैसे बढा सकता है?

धन्यवाद

Solutions Collecting From Web of "ओरेकल एसक्यूएल में 2 तारीख / बार के बीच अंतर की गणना करें"

आप ओरेकल में तिथियां घटा सकते हैं। यह आपको दिन में अंतर देगा। घंटों तक पहुंचने के लिए 24 गुणा, और इतने पर।

 SQL> select oldest - creation from my_table; 

यदि आपकी तिथि को वर्ण डेटा के रूप में संग्रहीत किया जाता है, तो आपको उसे किसी तिथि प्रकार को पहले कनवर्ट करना होगा।

 SQL> select 24 * (to_date('2009-07-07 22:00', 'YYYY-MM-DD hh24:mi') - to_date('2009-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_hours from dual; DIFF_HOURS ---------- 2.5 

नोट :

यह उत्तर ओरेकल डेटा प्रकार DATE द्वारा दर्शाई गई तिथियों पर लागू होता है। ओरेकल का TIMESTAMP भी है, जो एक तारीख (समय के साथ) का भी प्रतिनिधित्व कर सकता है। यदि आप TIMESTAMP मूल्य घटाते हैं, तो आपको एक INTERVAL मिलता है; संख्यात्मक मान निकालने के लिए, एक्स्ट्राक्ट फ़ंक्शन का उपयोग करें।

 declare strTime1 varchar2(50) := '02/08/2013 01:09:42 PM'; strTime2 varchar2(50) := '02/08/2013 11:09:00 PM'; v_date1 date := to_date(strTime1,'DD/MM/YYYY HH:MI:SS PM'); v_date2 date := to_date(strTime2,'DD/MM/YYYY HH:MI:SS PM'); difrence_In_Hours number; difrence_In_minutes number; difrence_In_seconds number; begin difrence_In_Hours := (v_date2 - v_date1) * 24; difrence_In_minutes := difrence_In_Hours * 60; difrence_In_seconds := difrence_In_minutes * 60; dbms_output.put_line(strTime1); dbms_output.put_line(strTime2); dbms_output.put_line('*******'); dbms_output.put_line('difrence_In_Hours : ' || difrence_In_Hours); dbms_output.put_line('difrence_In_minutes: ' || difrence_In_minutes); dbms_output.put_line('difrence_In_seconds: ' || difrence_In_seconds); end ; 

उम्मीद है की यह मदद करेगा।

 select extract( day from diff ) Days, extract( hour from diff ) Hours, extract( minute from diff ) Minutes from ( select (CAST(creationdate as timestamp) - CAST(oldcreationdate as timestamp)) diff from [TableName] ); 

यह आपको दिन, घंटे और मिनट के रूप में तीन कॉलम देगा।

आप तिथियों को टाइमस्टैम्प में कनवर्ट करने और सबट्रैक्ट ऑपरेशन करने के लिए_स्टिमस्टैम्प फ़ंक्शन का उपयोग कर सकते हैं।

कुछ इस तरह:

 SELECT TO_TIMESTAMP ('13.10.1990 00:00:00','DD.MM.YYYY HH24:MI:SS') - TO_TIMESTAMP ('01.01.1990:00:10:00','DD.MM.YYYY:HH24:MI:SS') FROM DUAL 

सेकंड में परिणाम प्राप्त करने के लिए:

 select (END_DT - START_DT)*60*60*24 from MY_TABLE; 

[ https://community.oracle.com/thread/2145099?tstart=0%5D%5B1%5D जांचें

अपने कंप्यूटर की आयु की गणना HIREDATE से करें

 SELECT HIREDATE||' '||SYSDATE||' ' || TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) ||' YEARS '|| TRUNC((MONTHS_BETWEEN(SYSDATE,HIREDATE))-(TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)*12))|| 'MONTHS' AS "AGE " FROM EMP; 
 select days||' '|| time from ( SELECT to_number( to_char(to_date('1','J') + (CLOSED_DATE - CREATED_DATE), 'J') - 1) days, to_char(to_date('00:00:00','HH24:MI:SS') + (CLOSED_DATE - CREATED_DATE), 'HH24:MI:SS') time FROM request where REQUEST_ID=158761088 ); 

आप यह भी कोशिश कर सकते हैं:

 select to_char(to_date('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')+(end_date - start_date),'hh24:mi:ss') as run_time from some_table; 

यह समय अधिक मानव पठनीय रूप में प्रदर्शित करता है, जैसे: 00:01:34। यदि आपको भी दिनों की आवश्यकता होती है तो आप केवल डीडी को अंतिम स्वरूपण स्ट्रिंग में जोड़ सकते हैं।

यदि आप कुछ ऐसा चाहते हैं जो थोड़ा सा आसान दिखता है, तो पिछले 1 मिनट में हुई तालिका में ईवेंट खोजने के लिए कोशिश करें:

इस प्रविष्टि के साथ आप दशमलव मूल्यों के साथ बेला जब तक आप उस मिनट के मूल्य को प्राप्त नहीं कर सकते जिसे आप चाहते हैं। मान .0007 तक 1 मिनट हो सकता है, जहां तक ​​sysdate महत्वपूर्ण अंकों का संबंध है। आप चाहते हैं कि किसी भी अन्य मूल्य प्राप्त करने के लिए आप के गुणकों का उपयोग कर सकते हैं:

 select (sysdate - (sysdate - .0007)) * 1440 from dual; 

परिणाम 1 (मिनट) है

तो इसके लिए जांचना एक सरल मामला है

 select * from my_table where (sysdate - transdate) < .00071; 
 $sql="select bsp_bp,user_name,status, to_char(ins_date,'dd/mm/yyyy hh12:mi:ss AM'), to_char(pickup_date,'dd/mm/yyyy hh12:mi:ss AM'), trunc((pickup_date-ins_date)*24*60*60,2),message,status_message from valid_bsp_req where id >= '$id'"; 

यह तिथियों के बीच समय की गिनती करेगा:

 SELECT (TO_CHAR( TRUNC (ROUND(((sysdate+1) - sysdate)*24,2))*60,'999999') + TO_CHAR(((((sysdate+1)-sysdate)*24)- TRUNC(ROUND(((sysdate+1) - sysdate)*24,2)))/100*60 *100, '09'))/60 FROM dual 

यहां एक और विकल्प है:

 with tbl_demo AS (SELECT TO_DATE('11/26/2013 13:18:50', 'MM/DD/YYYY HH24:MI:SS') dt1 , TO_DATE('11/28/2013 21:59:12', 'MM/DD/YYYY HH24:MI:SS') dt2 FROM dual) SELECT dt1 , dt2 , round(dt2 - dt1,2) diff_days , round(dt2 - dt1,2)*24 diff_hrs , numtodsinterval((dt2 - dt1),'day') diff_dd_hh_mm_ss from tbl_demo; 
 select (floor(((DATE2-DATE1)*24*60*60)/3600)|| ' : ' ||floor((((DATE2-DATE1)*24*60*60) -floor(((DATE2-DATE1)*24*60*60)/3600)*3600)/60)|| ' ' ) as time_difference from TABLE1 

ऑरेकल 11 जी में

end_date – start_date को tablexxx से day_diff के रूप में चुनें मान लीजिए कि starT_date end_date tablexxx में परिभाषित है

चर : P_comapre_date में सबसे पुराना मूल्य है, इसके अलावा, आप SYSDATE को बदल सकते हैं

 SELECT MAX(MONTHS_BETWEEN(SYSDATE,:P_comapre_date)/12) FROM dual