¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo calcular correctamente la diferencia entre dos campos de hora en ABAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 92 Vistas
0
Cargando...

¡Hola expertos!

Estoy tratando de calcular la diferencia entre dos campos de hora y el resultado que obtengo no es el esperado.

Mi consulta es:

select DATEDIFF(hh,U_horas,U_hora) from OINV where DocNum = 236

donde U_horas son las 11:00am y U_hora son las 02:00pm

El resultado esperado sería 3 (3 horas) pero obtengo 9600.

Ambos son campos de usuario creados de tipo hora, la hora se establece durante el mismo día.

No estoy seguro si existe otra función además de DATEDIFF que me pueda dar la diferencia correcta.

¡Desde ya, gracias!

¡Saludos!

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Opte por mejorar el formato en Crystal Reports.

Usando las siguientes fórmulas:

Para las diferencias en horas

DateDiff("h",CDateTime(Date({Comando.docdate}),Time({Comando.u_horaini})),CDateTime(Date({Comando.docdate}),Time({Comando.u_horafin})))

Para el excedente en minutos

({@nl} mod 3600)/60

Donde @nl es otro campo de fórmula con la diferencia en segundos:

(DateDiff("n",CDateTime(Date({Comando.docdate}),Time({Comando.u_horaini})),CDateTime(Date({Comando.docdate}),Time({Comando.u_horafin}))))*60

¡Saludos!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Por supuesto, me alegra que te haya sido útil!

Saludos,

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡Excelente, gracias! Eso me arroja las 3 horas de diferencia.

Solo que tendré que agregar un CASE para cuando la hora sea antes de las 10:00 am.

Ya que cuando la hora tiene 3 dígitos (de 1:00 am a 9:59 am) causa conflicto.

Me imagino que debo trabajar con la parte del

Cast ( U_Horas As Nvarchar ( 500 )) , 1 , 2 ) as Int

^ ^

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Tienes razón, intenta con esta:

Select Cast ( Substring ( Cast ( U_Horas As Nvarchar ( 500 )), 1 , 2 ) as Int ) - Cast ( Substring ( Cast ( U_Hora As Nvarchar ( 500 )), 1 , 2 ) as int )

from OINV

where DocNum = 236

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?