Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ऑरैकल में टाइमस्टैम्प घटाना अजीब डेटा लौटा रहा है

मुझे लगता है कि आपके कॉलम timestamp के रूप में परिभाषित हैं date . के बजाय .

टाइमस्टैम्प घटाने का परिणाम एक interval है जबकि date . घटाने का नतीजा कॉलम एक संख्या है जो दो तिथियों के बीच दिनों की संख्या का प्रतिनिधित्व करती है।

यह मैनुअल में प्रलेखित है:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

इसलिए जब आप अपने टाइमस्टैम्प कॉलम को आज तक कास्ट करते हैं, तो आपको वह मिलना चाहिए जिसकी आप अपेक्षा करते हैं:

with dates as (
   select timestamp '2012-04-27 09:00:00' as col1,
          timestamp '2012-04-26 17:35:00' as col2
   from dual
)
select col1 - col2 as ts_difference,
       cast(col1 as date) - cast(col2 as date) as dt_difference
from dates;

संपादित करें :

यदि आप अंतराल को परिवर्तित करना चाहते हैं तो उदा। सेकंड की संख्या (एक संख्या के रूप में), आप कुछ इस तरह कर सकते हैं:

with dates as (
   select timestamp '2012-04-27 09:00:00.1234' as col1,
          timestamp '2012-04-26 17:35:00.5432' as col2
   from dual
)
select col1 - col2 as ts_difference,
       extract(hour from (col1 - col2)) * 3600 +  
       extract(minute from (col1 - col2)) * 60 + 
       (extract(second from (col1 - col2)) * 1000) / 1000 as seconds
from dates;

उपरोक्त का परिणाम है 55499.5802



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जावा में इनपुटस्ट्रीम के लिए ओरेकल डेटाबेस बीएलओबी?

  2. लगातार दिनांक वैधता अंतराल को एक साथ जोड़ना

  3. Oracle DB में विदेशी कुंजियों और उनके द्वारा संदर्भित तालिकाओं की सूची

  4. oracle -- oracle तालिका में एकाधिक अल्पविराम से अलग किए गए मानों को एकाधिक पंक्तियों में विभाजित करें

  5. org.hibernate.ObjectDeletedException:हटाए गए ऑब्जेक्ट को कैस्केड द्वारा फिर से सहेजा जाएगा (हटाए गए ऑब्जेक्ट को संघों से हटा दें)