Duración negativa

Un usuario Pregunto ✅

Marticar001

tengo la siguiente informacion

Hora de inicio - Hora de finalización.PNG

*Fecha representa la fecha de la Hora de inicio

Hice la siguiente columna personalizada

Duración (Minutos) = [End Time] – [Begin TIme]

y luego transformó esa columna para mostrar Minutos totales

= Table.TransformColumns(#»Agregado personalizado»,{{«Duración (Minutos)», Duración.TotalMinutes, escriba número}})

Hay instancias donde [End Time] > [Begin TIme] resultando en una duración negativa

Hora de inicio - Hora de finalización Negativo.PNG

Ya que Fecha solo representa la Fecha para Hora de inicio

¿Hay alguna forma de mostrar la duración correcta en minutos (y en horas)?

Marcel Beug

En respuesta a Marcel Beug

Tal vez debería explicar esta solución:

Duration.TotalMinutes(#time(0,0,0)+([End Time]-[Begin Time])-#time(0,0,0))

Tomemos 2 ejemplos:

– de 9:00 a 15:00

– de 21:00 a 03:00

Cada uno es de 6 horas o 0,25 días,

[End Time] – [Begin Time] da como resultado una duración de 0,25 y -0,75 respectivamente.

Agregar esto a #time(0,0,0) dará como resultado un tiempo. #time siempre tomará la distancia del entero inferior al valor:

0 –> 0,25 = 0,25 (= 6:00 a. m.) y -1 –> – 0,75 = 0,25 (= 6:00 a. m.).

Ambos son iguales al resultado en Excel usando MOD, por ejemplo, =MOD(-0.75,1) devuelve 0.25.
En Power Query, Number.Mod(-0.75,1) da -0.75, que no es lo que estamos buscando.

Otra idea podría ser tomar DateTime de -0.75 y tomar la parte de tiempo de eso:
=Time.From(DateTime.From(-0.75)), pero la fracción de un número negativo siempre es adicional:
DateTime(0) = 30/12/1899 12:00 AM y DateTime(-0.75) = 30/12/1899 6:00 PM (o 18:00).
Así que eso tampoco es lo que estamos buscando.

Volviendo a la fórmula: al restar #time(0,0,0) de la hora calculada (ambas 6:00 a. m.), obtienes la duración desde las 12:00:00 a. m. hasta las 6:00 a. m. (en este ejemplo) o 0.6:0:0.

Ahora el total de minutos se puede tomar de esto.

castello

Hola @Marticar001

Me parece que está en Power Query/Query Editor, ya que parece que está usando M

¿Por qué no simplemente ….

1.- seleccione ambas columnas Fecha y Hora de inicio, haga clic derecho y luego fusione con un separador de espacios.
2.- seleccione ambas columnas Fecha y Hora de finalización, haga clic derecho y luego fusione con un separador de espacios.
3.- convertir a Fecha/Hora ambas columnas combinadas

4.- Resta ambas columnas

vicent

Marcel Beug

En respuesta a castello

Si desea considerar solo los tiempos, puede agregar una columna personalizada con la fórmula:

Duration.TotalMinutes(#time(0,0,0)+([End Time]-[Begin Time])-#time(0,0,0))

Marcel Beug

En respuesta a Marcel Beug

Tal vez debería explicar esta solución:

Duration.TotalMinutes(#time(0,0,0)+([End Time]-[Begin Time])-#time(0,0,0))

Tomemos 2 ejemplos:

– de 9:00 a 15:00

– de 21:00 a 03:00

Cada uno es de 6 horas o 0,25 días,

[End Time] – [Begin Time] da como resultado una duración de 0,25 y -0,75 respectivamente.

Agregar esto a #time(0,0,0) dará como resultado un tiempo. #time siempre tomará la distancia del entero inferior al valor:

0 –> 0,25 = 0,25 (= 6:00 a. m.) y -1 –> – 0,75 = 0,25 (= 6:00 a. m.).

Ambos son iguales al resultado en Excel usando MOD, por ejemplo, =MOD(-0.75,1) devuelve 0.25.
En Power Query, Number.Mod(-0.75,1) da -0.75, que no es lo que estamos buscando.

Otra idea podría ser tomar DateTime de -0.75 y tomar la parte de tiempo de eso:
=Time.From(DateTime.From(-0.75)), pero la fracción de un número negativo siempre es adicional:
DateTime(0) = 30/12/1899 12:00 AM y DateTime(-0.75) = 30/12/1899 6:00 PM (o 18:00).
Así que eso tampoco es lo que estamos buscando.

Volviendo a la fórmula: al restar #time(0,0,0) de la hora calculada (ambas 6:00 a. m.), obtienes la duración desde las 12:00:00 a. m. hasta las 6:00 a. m. (en este ejemplo) o 0.6:0:0.

Ahora el total de minutos se puede tomar de esto.

Abduvali

Hola @Marticar001,

Intente concatenar Fecha con Hora de inicio y Fecha con Hora de finalización y luego reste una columna de otra:

  1. Columna 1 = CONCATENAR (Fecha, Hora de inicio)
  2. Columna 2 = CONCATENAR (Fecha, Hora de finalización)
  3. Columna 2 – Columna 1 = Duración (seleccione el formato de tiempo de duración para la columna)

Saludos

Abduvali

tommartens

Oye,

desde mi punto de vista, es correcto que los valores sean negativos, esto se debe a que las 12:00 no representan el mediodía sino la medianoche, pero no la medianoche desde el día en su columna de fecha hasta el día siguiente, sino en lugar de el día anterior.

Esto significa que las 00:00 marca la transición del día anterior al día actual. Entonces, para solucionar esto, debe convertir las 12:00 a. m. a las 12:00 p. m. antes del uso de DATEADD().

Saludos

Tomás

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *