Главная > SQL > Вывод промежутка времени в часах,минутах, секундах (hh:mi:ss)


Вывод промежутка времени в часах,минутах, секундах (hh:mi:ss)

Скрипт с примером вывода промежутка времени в часах,минутах, секундах (hh:mi:ss)

SET SERVEROUTPUT ON
declare
  l_point1 NUMBER;
  l_point2 NUMBER;
  l_diff   NUMBER;
  l_time_s NUMBER;

  -- Возвращает затраченное время в секундах
  function get_time_diff(p_time number) return number
  is
  begin
    return round( p_time/100 , 0);
  end get_time_diff;
  
  -- Возвращает секунды
  function get_time_diff_ss(p_all_time number) return number
  is
  begin
    return round(mod(p_all_time,60),0);
  end get_time_diff_ss; 
  
  -- Возвращает минуты
  function get_time_diff_mi(p_all_time number) return number
  is
  begin
    return mod(floor(p_all_time/60),60);
  end get_time_diff_mi;    
  
  -- Возвращает часы
  function get_time_diff_hh(p_all_time number) return number
  is
  begin
    return floor(p_all_time/(60*60));
  end get_time_diff_hh;     
  
  -- Возвращает разницу в hh:mi:ss
  function get_time_diff_hhmiss(p_all_time number) return varchar2
  is
    l_time_s NUMBER;
  begin
    l_time_s := round( p_all_time/100 , 0);
    return        lpad( floor(round(l_time_s /3600,2)) ,2,'0')
           ||':'||lpad( mod(floor(l_time_s /60),60)    ,2,'0')
           ||':'||lpad( round(mod(l_time_s ,60),0)     ,2,'0');
  end get_time_diff_hhmiss;     
   
begin
  l_point1 := dbms_utility.get_time();
  dbms_lock.sleep(5);
  l_point2 := dbms_utility.get_time();

  l_diff   := l_point2 - l_point1;
  l_time_s := get_time_diff(l_diff);
  
  dbms_output.put_line('весь период времени в секундах = '|| l_time_s || 's');
  
  dbms_output.put_line('только секунды = '|| get_time_diff_ss(l_time_s)||'s' );
  
  dbms_output.put_line('только минуты = '|| get_time_diff_mi(l_time_s)||'m' );  

  dbms_output.put_line('только часы = '|| get_time_diff_hh(l_time_s)||'h' );  

  dbms_output.put_line('h:m:s = '|| get_time_diff_hh(l_time_s)||'h:'
                      ||get_time_diff_mi(l_time_s)
                      ||'m:'||get_time_diff_ss(l_time_s)||'s' ); 

  dbms_output.put_line('hh:mi:ss = '|| lpad(get_time_diff_hh(l_time_s),2,'0')
                        ||':'||lpad(get_time_diff_mi(l_time_s),2,0)
                        ||':'||lpad(get_time_diff_ss(l_time_s),2,'0') );
  
  dbms_output.put_line('get_time_diff_hhmiss = '|| get_time_diff_hhmiss(l_diff));
    
end;
/

весь период времени в секундах = 5s
только секунды = 5s
только минуты = 0m
только часы = 0h
h:m:s = 0h:0m:5s
hh:mi:ss = 00:00:05
get_time_diff_hhmiss = 00:00:05

Похожие записи:

  • No Related Posts
  1. 2 Октябрь 2017 в 15:25 | #1

    Если бы вы еще объяснили как этот скрипт работает, то цены бы вам не было ))

  1. Пока что нет уведомлений.