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

ओरेकल एसक्यूएल घंटे एचएच में तिथियों के बीच अंतर:एमएम:एसएस

मान लें कि कॉलम पहले से ही दिनांक हैं, और इसलिए आपके द्वारा किए जा रहे स्ट्रिंग्स से और उनके लिए रूपांतरण व्यर्थ है, और यह कि अंतर हमेशा एक दिन से कम होने वाला है, आप यह कर सकते हैं:

to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')

यह तिथियों के बीच एक दिन के अंश के रूप में अंतर प्राप्त करता है; abs() . के माध्यम से सुनिश्चित करता है कि यह सकारात्मक है; और फिर उस अंश को एक नाममात्र तिथि पर वापस जोड़ता है, जिसका समय मध्यरात्रि के रूप में होता है। फिर यह केवल समय को देखते हुए इसे एक स्ट्रिंग में बदल देता है।

त्वरित डेमो:

-- CTEs to supply the two date/times
with stp (created_date) as (
  select cast(timestamp '2018-02-26 12:59:21' as date) from dual
),
adhh (created_date) as (
  select cast(timestamp '2018-02-26 12:59:32' as date) from dual
)
select to_char(date '1970-01-01' + abs(stp.created_date - adhh.created_date), 'HH24:MI:SS')
from stp cross join adhh;

TO_CHAR(
--------
00:00:11

यदि अंतर एक दिन से अधिक हो सकता है, लेकिन एक वर्ष से अधिक नहीं, तो आप प्रारूप मॉडल को कुछ इस तरह बदल सकते हैं जैसे 'FMDDD FMHH24:MI:SS' , जो प्रारंभ में पूरे दिन दिखाएगा।



  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. मैं Oracle में किसी अनुक्रमणिका और तालिका स्वामी के बारे में जानकारी कैसे प्राप्त करूं?

  3. Oracle डेटाबेस में PL/SQL फंक्शन कैसे बनाएँ?

  4. लेफ्ट जॉइन में शामिल पंक्तियों की संख्या गिनना

  5. pl/sql प्रक्रिया में चर घोषित करते समय वाक्यविन्यास त्रुटि