tenho duas datas explo
'13/05/2010 11:00' e '13/05/2010 17:30'
gostaria de exibir para o usuario no formato explo '48:00h'
tentei alguns codigos para fazer esse calculo mas não consigo estou desde as 8 procurando ate agora nada
fico grato se alguém me ajudar.
desde já grato.
calculo de duas datas no formato HH:MM
-
- Rank: Oracle Guru
- Mensagens: 448
- Registrado em: Ter, 16 Jun 2009 3:07 pm
- Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS
[]s
Programador Junior
Parobé RS
[]s
Da uma olhada neste tópico
http://glufke.net/oracle/viewtopic.php? ... highlight=
Se não te ajudar posta aí.
http://glufke.net/oracle/viewtopic.php? ... highlight=
Se não te ajudar posta aí.
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 13 Ago 2010 10:55 am
- Localização: SJCampos - SP
não só me fez ver que pode ter algo mais estranho ainda..
bom tenho duas datas a de entrada e de saida digitada pelo usuario que já esta cadastrada no banco.
estou emitindo um relatorio e querem esse tempo em horas tipo ele ficou 48 horas.
a ideia.. mas depois tenho que passa para proc ainda.
bom tenho duas datas a de entrada e de saida digitada pelo usuario que já esta cadastrada no banco.
estou emitindo um relatorio e querem esse tempo em horas tipo ele ficou 48 horas.
SELECT TO_DATE('13/05/2010 09:35','HH12:MI:SS') - TO_DATE('13/05/2010 17:30','HH12:MI:SS') FROM dual
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 13 Ago 2010 10:55 am
- Localização: SJCampos - SP
SELECT TO_CHAR(date_diff('13/05/2010 09:35', '13/05/2010 17:00', MINUTE)/ 60) || ' : ' ||
TO_CHAR(MOD(date_diff('13/05/2010 09:35', '13/05/2010 17:00',MINUTE),60))
FROM DUAL
alguém?
-
- Rank: Programador Júnior
- Mensagens: 25
- Registrado em: Qui, 21 Jan 2010 4:40 pm
- Localização: Porto Alegre - RS
SENDO:
dt_fim = to_date('14/05/2010 19:35','dd/mm/yyyy HH24:MI')
dt_ini = to_date('12/05/2010 10:35','dd/mm/yyyy HH24:MI')
SELECT to_number(to_char(to_date('1','J') +
(dt_fim - dt_ini), 'J') - 1) dias,
to_char(to_date('00:00:00','HH24:MI:SS') +
(dt_fim - dt_ini), 'HH24:MI:SS') horas
FROM tabela_datas;
-
- Rank: Oracle Guru
- Mensagens: 448
- Registrado em: Ter, 16 Jun 2009 3:07 pm
- Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS
[]s
Programador Junior
Parobé RS
[]s
Testa aí.
SELECT TRUNC(((SYSDATE - (SYSDATE - 2 - (7 / 1440))) *24))||':'||to_char(ROUND(
((((SYSDATE - (SYSDATE - 2 - (7 / 1440))) *24) - TRUNC(((SYSDATE - (SYSDATE - 2 - (7 / 1440))) *24))) * 60)),'00') FROM DUAL
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 13 Ago 2010 10:55 am
- Localização: SJCampos - SP
Obrigado SergioLBJr, LixX
Para ajudar alguém que prescise ta ai a proc.
CREATE OR REPLACE PROCEDURE SP_038_DATA_HORAS(IN_DATA_INICIAL IN DATE,
IN_DATA_FINAL IN DATE,
OUT_CURSOR OUT Pa_Ecr_Cursor.CURSOR_ECR_TYPE)
AS
BEGIN
OPEN OUT_CURSOR FOR
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440) / 60), '00')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440), 60), '00')) AS HORA
FROM DUAL;
END SP_038_DATA_HORAS;
-
- Rank: Oracle Guru
- Mensagens: 448
- Registrado em: Ter, 16 Jun 2009 3:07 pm
- Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS
[]s
Programador Junior
Parobé RS
[]s
O problema aconteceu devido ao parâmetro do to_char
tenta ai.
tenta ai.
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440) / 60), '0000')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440), 60), '0000')) AS HORA
FROM DUAL;
-
- Rank: Estagiário Pleno
- Mensagens: 6
- Registrado em: Sex, 13 Ago 2010 10:55 am
- Localização: SJCampos - SP
Sim eu tentei isso porem não deu nada..
coloquei assim funcionou porque o to_char esta travando para ser duas casas e um campo char agora está como numerico.
conversei com o analista ele disse que não há problema na primeira casa ser com um digito.
Valeu a grande ajuda Sergio.
coloquei assim funcionou porque o to_char esta travando para ser duas casas e um campo char agora está como numerico.
SELECT ROUND((TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440) / 60)
|| ':' ||
TRIM(TO_CHAR(MOD(ROUND(TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440), 60), '00')) AS HORA
FROM DUAL;
Valeu a grande ajuda Sergio.
-
- Rank: Oracle Guru
- Mensagens: 448
- Registrado em: Ter, 16 Jun 2009 3:07 pm
- Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS
[]s
Programador Junior
Parobé RS
[]s
O problema aconteceu devido ao parâmetro do to_char
tenta ai.
tenta ai.
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440) / 60), '0000')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE(IN_DATA_FINAL,
'DD/MM/YYYY HH24:MI') -
TO_DATE(IN_DATA_INICIAL,
'DD/MM/YYYY HH24:MI')) * 1440), 60), '0000')) AS HORA
FROM DUAL;
-
- Rank: Oracle Guru
- Mensagens: 448
- Registrado em: Ter, 16 Jun 2009 3:07 pm
- Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS
[]s
Programador Junior
Parobé RS
[]s
Ops resposta repetida.
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 02 Set 2010 3:23 pm
- Localização: RJ
Senhores,
Também estou quebrando a cabeça para montar uma procedure que funcione, contudo sempre surge uma divergência no resultado.
Por exemplo essa procedure postada funciona se os minutos forem menor que 30, se forem mair retorna uma hora a mais.
Exemplo:
RESULTADO = 0001:0031
Também estou quebrando a cabeça para montar uma procedure que funcione, contudo sempre surge uma divergência no resultado.
Por exemplo essa procedure postada funciona se os minutos forem menor que 30, se forem mair retorna uma hora a mais.
Exemplo:
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')) * 1440) / 60), '0000')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')) * 1440), 60), '0000')) AS HORA
FROM DUAL
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Tenta assim...
SQL> SELECT TO_CHAR(TRUNC(SYSDATE) + (data_fim - data_ini) * 1440 / 60 / 24, 'hh24:mi:ss') retorno
2 FROM (SELECT TO_DATE('02-sep-2010 13:00:00', 'dd-mon-rrrr hh24:mi:ss') data_ini
3 ,TO_DATE('02-sep-2010 15:30:00', 'dd-mon-rrrr hh24:mi:ss') data_fim
4 FROM dual);
RETORNO
--------
02:30:00
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
a sua solução com o problema resolvido pelo Diego_Mello...
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')) * 1440) / 60 / 24), '0000')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')) * 1440), 60), '0000')) AS HORA
FROM DUAL;
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Galera...
Pensando um pouco agora... (antes fiz no correrio)..
60 * 24 = 1440, não é??
euaheuaheuaheu
Então...
Pensando um pouco agora... (antes fiz no correrio)..
60 * 24 = 1440, não é??
euaheuaheuaheu
Então...
SQL> SELECT TO_CHAR(TRUNC(SYSDATE) + (data_fim - data_ini), 'hh24:mi:ss') retorno
2 FROM (SELECT TO_DATE('02-sep-2010 13:00:00', 'dd-mon-rrrr hh24:mi:ss') data_ini
3 ,TO_DATE('02-sep-2010 15:30:00', 'dd-mon-rrrr hh24:mi:ss') data_fim
4 FROM dual);
RETORNO
--------
02:30:00
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
começa a abrir e fechar muito parenteses fica ruim ne!?!?!
aheuaheuaheuaheuahe
aheuaheuaheuaheuahe
SELECT TRIM(to_char(ROUND((TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')))), '0000')
|| ':' ||
to_char(MOD(ROUND(TO_NUMBER(TO_DATE('01/06/2006 12:31',
'DD/MM/YYYY HH24:MI') -
TO_DATE('01/06/2006 12:00',
'DD/MM/YYYY HH24:MI')) * 1440), 60), '0000')) AS HORA
FROM DUAL;
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Sim.
XGH é o que há!
XGH é o que há!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante