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

परिकलित कॉलम के संख्या प्रारूप को समय (hh:mm:ss) प्रारूप, sql क्वेरी में कैसे बदलें?

एक समारोह इसे सुंदर बनाता है। यह दिनों की संख्या लौटाता है dd:hh:mi:ss . के रूप में स्वरूपित ।

SQL> create or replace function f_days2ddhhmiss (par_broj_dana in number)
  2     return varchar2
  3  is
  4     l_broj_dana  number := par_broj_dana;
  5     retval       varchar2 (20);
  6  begin
  7     with podaci
  8          as (select trunc (l_broj_dana) broj_dana,
  9                     round (mod (l_broj_dana * 24, 24), 2) broj_sati,
 10                     round (mod (l_broj_dana * 24 * 60, 60), 2) broj_minuta,
 11                     round (mod (l_broj_dana * 24 * 60 * 60, 60), 2)
 12                        broj_sekundi
 13                from dual)
 14     select    lpad (p.broj_dana, 2, '0')
 15            || ':'
 16            || lpad (trunc (p.broj_sati), 2, '0')
 17            || ':'
 18            || lpad (trunc (p.broj_minuta), 2, '0')
 19            || ':'
 20            || lpad (trunc (p.broj_sekundi), 2, '0')
 21       into retval
 22       from podaci p;
 23
 24     return retval;
 25  end f_days2ddhhmiss;
 26  /

Function created.

उदाहरण:

इसके बिना, आपको एक दशमलव संख्या मिलती है:

SQL> select to_date('07.08.2020 14:25', 'dd.mm.yyyy hh24:mi:ss')
  2       - to_date('03.08.2020 13:20', 'dd.mm.yyyy hh24:mi:ss') result
  3  from dual;

    RESULT
----------
4,04513889

इसके साथ, आपको वह मिलता है जो आप चाहते थे:

SQL> select f_days2ddhhmiss(to_date('07.08.2020 14:25', 'dd.mm.yyyy hh24:mi:ss')
  2                       - to_date('03.08.2020 13:20', 'dd.mm.yyyy hh24:mi:ss')
  3                        ) result
  4  from dual;

RESULT
--------------------------------------------------------------------------------
04:01:05:00

SQL>

हाँ, ऐसे (या समान) कोड का उपयोग सीधे SQL में किया जा सकता है, लेकिन यह एक SELECT बनाता है बयान की तरह बदसूरत और पढ़ने में मुश्किल।

तब आपकी क्वेरी होगी

SELECT m.numos,
       m.codfuncos,
       m.dtinicioos,
       m.dtfimseparacao,
       f_days2ddhhmiss (m.dtfimseparacao - m.dtinicioos) AS tempo
  FROM pcmovendpend m
 WHERE     dtfimseparacao IS NOT NULL
       AND data >= SYSDATE - 1

देखें कि क्या यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC में varchar2 की स्ट्रिंग Oracle ARRAY नहीं बना सका

  2. VARCHAR2(10 CHAR) और NVARCHAR2(10) के बीच अंतर

  3. Oracle संग्रहीत कार्यविधि के लिए वैश्विक अस्थायी तालिकाओं के लिए वैकल्पिक विधि

  4. तालिका और/या कॉलम के लिए सभी पैकेजों को खोजने की क्वेरी

  5. डेटाबेस:पाइपलाइन कार्य