Jump to content
frlopes

Retorno em horas e minutos ( 28:15 )

Recommended Posts

Pessoal, bom dia.

Preciso calcular em horas e minutos a diferença entre datas com horas e minutos.

Exemplo 1:

Data Inicial: 01/06/2006 10:30
Data Final:   02/06/2006 11:00

Preciso que o retorno seja: 23:30

Exemplo 2:

Data Inicial: 01/06/2006 10:30
Data Final: 02/06/2006 14:00

Preciso que o retorno seja: 27:30


Tentei o seguinte código abaixo, porém ele dá uma diferença de 1 hora a mais. Alguém pode me ajudar? Ou me passar outra forma de fazer?
 

 

Obrigada!

 

1
2
3
4
5
select round(((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') -
                         to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440))/60)||':'||
            round((to_number(to_date('02/06/2006 11:00','DD/MM/RRRR HH24:MI') -
                         to_date('01/06/2006 10:30','DD/MM/RRRR HH24:MI')) * 1440) -1440)
from dual

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Suporte Risti
      Bom dia, estou iniciando com bando de dados oracle e plsql e estou precisando de uma ajuda para criar um arquivo .bat para nossa empresa em que o usuário consiga apagar os horários do nosso banco de dados, mas não sei como fazer a procedure identificar o dado digitado na variável do .bat
       
      script do .bat
      @echo Off title limpeza de horarios. : inicio cls echo -------------------Informe uma data valida, apenas numeros------------------- echo . echo ------------------------------informe a data--------------------------------- set /p data = echo . echo . sqlplus usuario/senha@intancia @script.sql cls echo . : Fim echo . echo -----------------Horario apagado----------------- echo . pause O script em questão é esse, ele executa uma procedure, ela apaga os horários, o parâmetro da mesma é uma data ex: abaixo.
      set serveroutput on begin sp_apaga_horario('31072019'); end; / exit como eu faço para o dado salvo na variável data seja executado no parâmetro da procedure? não estou conseguindo fazer isso, estou tendo que alterar o script para data que o usuário quer apagar e somente executando o .bat digitando números aleatórios para que ele não trave, não sei como fazer para a mesma identificar esse dado estando em um script diferente.
       
      Quem souber e puder me ajudar ja agradeço desde já.
    • By asacap1000
      Galera não sei o porque mas n select abaixo eu preciso mostrar o ultimo registro de uma das datas que são lançadas.
      SELECT IO.ID_IN_OUT TICKET, TO_CHAR(IO.TIME_ARRIVAL, 'DD/MM/YYYY HH24:MI') CHEGADA, TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') LIBERADO, TO_CHAR(IO.TIME_IN, 'DD/MM/YYYY HH24:MI') ENTRADA, SUBSTR(SP.NAME, 0, 18) TRANSPORTADORA, SUBSTR(DR.NAME, 0, 18) MOTORISTA, VE.PLATE PLACA, (SELECT DISTINCT MAX(TOS.PLATZ) DOCA FROM PICKAUF PI, AUFTRAEGE TOS, (SELECT IO.ID_IN_OUT, MAX(IO.TIME_RELEASE_PP) TIME_RELEASE_PP, IOP.DOCUMENT, MAX(IO.TIME_OUT) TIME_OUT FROM IN_OUT IO, IN_OUT_POS IOP WHERE IO.ID_IN_OUT = IOP.ID_IN_OUT --AND IO.ART_IN_OUT IN ('CA', 'CCE', 'CC') AND IO.STAT <> '80' GROUP BY IOP.DOCUMENT, IO.ID_IN_OUT) SAD WHERE PI.CHARGE = TOS.NR_AUF AND SAD.ID_IN_OUT = IO.ID_IN_OUT AND SAD.DOCUMENT(+) = REPLACE(TRANSLATE(TOS.HINW_ZUST, '/-', ' '), ' ') GROUP BY SAD.ID_IN_OUT) DOCA FROM IN_OUT IO, SPEDITEURE SP, VEHICLE VE, TRACTOR TR, DRIVER DR WHERE IO.STAT <> '80' AND IO.TIME_ARRIVAL IS NOT NULL AND TR.ID_TRACTOR = IO.ID_TRACTOR AND DR.ID_DRIVER = IO.ID_DRIVER AND VE.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_RELEASE_PP IS NULL AND SP.ID_SPEDITEUR = IO.ID_SPEDITEUR AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE', 'CV') and rownum = '1' ORDER BY TO_CHAR(IO.TIME_RELEASE_IN, 'DD/MM/YYYY HH24:MI') Neste Select temos as datas de CHEGADA, LIBERADO, ENTRADA. eu preciso mostrar o ultimo registro do LIBERADO. Eu já fiz um max porém não retornou.Ela será utilizada em um telão no pátio de uma empresa.
       
      O telão será desta forma
       

    • By VictorPHP
      Galera preciso de ajuda,
       
      Meu campo no banco de data é data/hora, e preciso ver a hora. Quando eu faço o select me retorna apenas a data. Realizei o debug e vi que esta retornando apenas a data como varchar. Conseguem me ajudar ? 
      Ja tentei diversas conversões de data. To char, To date , Date , Strtotime ... Nada funcionou. Uso PHP 5.6.40 e banco de dados Oracle. Minha necessidade é mostrar a data e hora do evento. Alguem conhece uma solução ? 
       
      Formato no meu banco : 
      25.07.2019 05:33:00
       
      Meu codigo: 
       
      SELECT : 
       
      $sql='SELECT
      tr.tm_prf_act as prf,
      tr.tm_cod_of,
      ev.ev_nom_mac ,
      un.dt_ini_parada, 
      un.dt_fim_parada,
      un.cod_motivo,
      un.cod_mot_despachador 
      FROM unl_trens_parados un,trens tr, elem_via ev
      WHERE un.id_trem_act = tr.tm_id_trm
      AND un.id_sb = ev.ev_id_elm
      AND un.dt_ini_parada > SYSDATE -1
      AND un.id_posto = 2
      AND un.cod_motivo IN (20,28,26,50,15,30)
      AND un.dt_fim_parada IS NOT NULL
      ORDER BY un.dt_ini_parada desc ';
       
      Conexão :
      $stid=oci_parse($ora_conexao,$sql);
      oci_execute($stid);
       
      Chamando a data somente para testar : 
      $teste = oci_result($stid,'DT_INI_PARADA'); --> Estou testando o campo de data 
      echo date('d/m/Y H:m:s', strtotime($teste)); -> Chamando a data
       
      Debug ( Me retorna apenas data "25/07/2019")
      $var = $teste; -> Debugando
      var_dump($var); > Debugando
      die(); > Debugando
       
       
    • By Kennyguedes
      Olá, preciso transformar a seguinte subquery para utilizar como uma table no join
       
      NVL((SELECT X.MPE_META
          FROM (SELECT MPE_IDC_ID, MPE_META
                FROM META_PERSONALIZADA_SLA M
               ORDER BY M.MPE_META DESC) X
          WHERE ROWNUM = 1
          AND X.MPE_IDC_ID = IDC_ID
          AND X.MPE_META <= APR_NEGOCIACAO_SLA), IDC_META)
       
      eu utilizo esse trecho em vários lugares dentro da minha procedure, então queria utilizar como "LEFT JOIN", assim o custo seria menor da procedure
      caso seja possivel e alguem puder ajuda
    • By Abran
      Gostaria de poder fazer um SELECT dentro do LOOP igual ao exemplo abaixo.
      Esse exemplo não deu certo, se tirar esse SELECT que está dentro do LOOP, tudo funciona. O problema está no Select dentro do LOOP que nao aceita.
      ORA-01403: dados não encontrados
       
      A ideia é, Z45 grava cliente, e Z46 grava títulos em aberto.

      Toda vez que rodar, deverá checar se existe novos títulos que ainda não foram gravados, e só gravar os que ainda não foram.
       
      Alguem sabe alguma maneira de fazer o que preciso ?
       
      DECLARE      v_CODCLI   VARCHAR2 (6);   vPREFIXO   VARCHAR2 (3);   vNUM       VARCHAR2 (9);   vPARCELA   VARCHAR2 (3); BEGIN          v_CODCLI := '0';          FOR V_FUNC IN     (     SELECT E1_FILIAL, A1_COD, A1_LOJA, A1_PESSOA, E1_PREFIXO, E1_NUM, E1_PARCELA, E1_TIPO, E1_NATUREZ, E1_EMISSAO, E1_VENCREA, E1_VALOR,     CASE WHEN TO_DATE('20190627', 'yyyymmdd') - TO_DATE(E1_VENCTO, 'yyyymmdd') < 0              THEN 0        ELSE TO_DATE('20190627', 'yyyymmdd') - TO_DATE(E1_VENCTO, 'yyyymmdd') END ATRASO      FROM SE1010 SE1      INNER JOIN SA1010 A1 ON A1.A1_COD = E1_CLIENTE AND A1_LOJA = E1_LOJA AND A1.D_E_L_E_T_ = SE1.D_E_L_E_T_      WHERE SE1.D_E_L_E_T_ = ' '      ORDER BY A1_LOJA, A1_COD     )     LOOP                  SELECT Z46_PREFIX, Z46_NUM, Z46_PARCEL, Z46_TIPO, Z46_NATURE          INTO vPREFIXO, vNUM, vPARCELA, vTIPO, vNATUREZ          FROM Z46010 Z46          WHERE Z46_PREFIX = V_FUNC.E1_PREFIXO         AND Z46_NUM = V_FUNC.E1_NUM          AND Z46_PARCEL = V_FUNC.E1_PARCELA         AND D_E_L_E_T_ = ' ' ;                          IF vPREFIXO || vNUM || vPARCELA !=  V_FUNC.E1_PREFIXO || V_FUNC.E1_NUM || V_FUNC.E1_PARCELA THEN                      IF V_FUNC.A1_COD <> v_CODCLI THEN                              v_CODCLI :=  V_FUNC.A1_COD;                                  INSERT                 INTO DADOSADV.Z45010                 (                     Z45_RECNO,                     Z45_FILIAL,                     Z45_CODCLI,                     Z45_LOJA,                     Z45_PESSOA,                     Z45_DTCAD                 )                 VALUES                 (                     (SELECT CASE WHEN MAX(Z45_RECNO) IS NULL THEN 1 ELSE MAX(Z45_RECNO) + 1 END Z45_RECNO FROM Z45010) ,                     V_FUNC.E1_FILIAL,                     V_FUNC.A1_COD,                     V_FUNC.A1_LOJA,                     V_FUNC.A1_PESSOA,                     TO_CHAR(SYSDATE, 'YYYYMMDD')                 );                                  COMMIT;                          END IF;                          INSERT             INTO DADOSADV.Z46010             (                     Z46_RECNO,                     Z46_RECZ45,                     Z46_STATIT,                     Z46_PREFIX,                     Z46_NUM,                     Z46_PARCEL,                     Z46_TIPO,                     Z46_NATURE,                     Z46_VALOR,                     Z46_ATRASO,                     Z46_DTCAD             )             VALUES             (                 (SELECT CASE WHEN MAX(Z46_RECNO) IS NULL THEN 1 ELSE MAX(Z46_RECNO) + 1 END Z46_RECNO FROM Z46010) ,                 (SELECT CASE WHEN MAX(Z45_RECNO) IS NULL THEN 1 ELSE MAX(Z45_RECNO) END Z45_RECNO FROM Z45010),                 0,                 V_FUNC.E1_PREFIXO,                 V_FUNC.E1_NUM,                 V_FUNC.E1_PARCELA,                 V_FUNC.E1_TIPO,                 V_FUNC.E1_NATUREZ,                 20,                 V_FUNC.ATRASO,                 TO_CHAR(SYSDATE, 'YYYYMMDD')             );                          COMMIT;                              END IF;          END LOOP;           END;
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.