एक समारोह इसे सुंदर बनाता है। यह दिनों की संख्या लौटाता है 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
देखें कि क्या यह मदद करता है।