Marticar001
tengo la siguiente informacion
*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
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:
- Columna 1 = CONCATENAR (Fecha, Hora de inicio)
- Columna 2 = CONCATENAR (Fecha, Hora de finalización)
- 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