Calcular costo de mano de obra

Buen día, me pueden ayudar a calcular el costo de mano de obra en base al tiempo de las actividades realizadas
primero cambie la duración pero ahora no se como aplicar la formula
CONVERT(NVARCHAR, CAST((T2.Duration+0.001) /86400.0 AS DateTime), 8) as ‘Tiempo de Duración’,
y no me funciona esto (T0.Duration/60)*(T3.emplCost/60) as ‘Costo’,
pues hay actividades que duran 7:59 minutos y con la formula anterior me calcula enteros es decir si una actividad dura 8:30 minutos T0.Duration/60 me dice que es 8:50 por lo que me hace mal el calculo.
Alguien que pueda ayudarme
saludos

Hola @Liz_monty

el campo DURATION es de tipo real, y yo no lo convertiría a DATETIME. No tengo claro que quieres obtener, si los minutos que dura la actividad, las horas, … Tampoco explicas cómo tienes definido el coste de mano de obra, por hora, un precio para la primera y luego otro a partir de la segunda.

Si lo haces por horas, divide DURATION por 3600 y obtendrás las horas como un valor numérico. Este valor multiplícalo por el coste de la hora y dime si se acerca a lo que buscas.

Un saludo

1 me gusta

Buen día a ver si me explico mejor tengo una actividad de hoy que inicia a las 8:30AM y termina 4:29PM esto da un total de 7:59 es decir 7 horas con 59 minutos esto debo multiplicarlo por el costo del tecnico que es por ejemplo $ 80.71 MXP por hora ,es decir las 7:59 horas con minutos por $ 80.71 dando un total de $ 612.5889 pesos este es mi costo de la actividad.
Si hago lo que me dices (Duración/3600) me da un 7.98 y no 7.59
7.98*80.71 = $644.0658
me pueden ayudar a calcular esto por favor

Hola @Liz_monty

dividir por 3600 es correcto para obtener las horas; los decimales que obtengas debes multiplicarlos por 60 para obtener los minutos.

La duración de tu actividad es 28728; si lo dividimos por 3600 obtenemos 7,98. Tenemos 7 horas, con x minutos que no sabemos cuántos son: 0.98*60 = 58.8. Redondeamos y obtienes la duración.

La actividad duró 7 horas y 59 minutos.

Ahora aplicas el precio por hora y tienes tu coste.

Un saludo

1 me gusta

Como separas los decimales para multiplicarlos porque si hago la operación completa me da un entero ([Duration] /3600)*60 me da 479
ahora si separo los decimales ([Duration] /3600)-floor[Duration] /3600) = 0.98 si lo multiplicas por 60 da un numero en negativo como podría aplicar lo que mencionas

Hola @Liz_monty

lo único que se me ocurre es convertir el resultado obtenido a NVARCHAR, separarlo en dos por el punto decimal y seguir operando; la primera cadena obtenida serán las horas, y la segunda la cantidad para calcular los minutos.

Un saludo

deberías usar solo una dimension de tiempo para calcular el coste… o bien horas o bien minutos.
Lo más lógico es que pases el coste a precio minuto y multipliques por los minutos.

2 Me gusta

Disculpa no entendi nada, puedes mostrarme un ejemplo

Hola @Liz_monty

lo que dice @meqs es calcular el tiempo en minutos (dividir la duración por 60), y en lugar de aplicar el coste de la mano de obra por horas y minutos, aplicarlo sólo por minutos. Deberías convertir los 80.71 MXP por hora en 1.35 MXP por minuto.

En el ejemplo que aportas:
28728 / 3600 = 478.80 minutos de intervención
478.80 * 1.35 = 646.38 MXP

Un saludo

Si notas no coinciden los resultados pues a mi me sale $ 612.5889 y a ti $ 646.38 tengo una diferencia de $33.80 pesos ??? :expressionless:

Hola @Liz_monty

la diferencia podrá deberse al número de decimales considerados en cada operación y el redondeo aplicado.

Un saludo

Hola @Liz_monty
Si quieres calcular en horas, tienes que convertir tus 59 minutos a 1 hora.
Entonces tu operación sería (7x80,71)+(0,983333x80,71)=644,334833

Lo que te digo es que para facilitar la operatoria calculas todo en minutos.
7:59 en minutos son 479 y el coste hora 80,71 lo divides entre 60=1,34516667
El resultado igual= 644,334833

La cuestión es que en la sql a mi modo de ver, es más facil obtener el tiempo en minutos

2 Me gusta

Hola @Liz_monty lo que los compañeros te indican anteriormente es correcto, creo que te tiene confundida las 7.59 horas pero si los 59 minutos los conviertes en equivalente a hora 59/60 = 0.98, entonces son 7.98 horas, ya que por 1 minuto no se llega al 100% del equivalente de la hora.
El valor real con los 644.33 y no los 612.

Saludos