Forums Últimos mensajes - Powered by IBM
 

como calcular la diferencia de tiempo entre dos fechas pero ignora

13/04/2006 - 05:07 por IvanRuiz | Informe spam
Hola a todos, espero alguien pueda ayudarme

He estado dando vueltas en como podria hacer para obtener la diferencia
entre dos fechas pero sin considerar cierto periodo de tiempo(horas habiles)

Es decir
04/12/2006 8:00:00 A.M
04/15/2006 10:00:00 A.M

Como obtener la diferencia entre esas dos fechas pero considerando solamente
horas habiles (de 8 Am a 5 Pm por ejemplo)

Esto deseo lograrlo pero con Funciones de SQL Server no iterando entre
registros

Saludos cordiales, espero alguien pueda ayudarme.

Ivan Ruiz
 

Leer las respuestas

#1 Alejandro Mesa
13/04/2006 - 14:53 | Informe spam
Ivan,

Veamos si esto te sirve de algo.

use northwind
go

declare @sd datetime
declare @ed datetime
declare @i int

set @sd = '2006-04-12T08:10:05'
set @ed = '2006-04-15T10:20:00'
Set @i = datediff(second, @sd, convert(char(10), @sd, 126) +
'T17:00:00.000') + ((datediff(day, @sd, @ed) - 1) * (8 * 60 * 60)) +
datediff(second, convert(char(10), @ed, 126) + 'T08:00:00.000', @ed)

select
@i as diferencia_en_segundos,
@i / 3600 as horas,
(@i % 3600) / 60 as minutos,
(@i % 3600) % 60 as segundos
go


Diferencia en segundos desde las @sd hasta las 5:00 pm del primer dia


Diferencia en segundos desde las 8 de la mañana hasta las @ed del ultimo dia


Numero de dias entre ambas fechas, sin tomar en cuanta el primer y ultimo
dia. Esto lo multiplicamos por la cantidad de segundos que tiene 8 horas.


AMB


"IvanRuiz" wrote:

Hola a todos, espero alguien pueda ayudarme

He estado dando vueltas en como podria hacer para obtener la diferencia
entre dos fechas pero sin considerar cierto periodo de tiempo(horas habiles)

Es decir
04/12/2006 8:00:00 A.M
04/15/2006 10:00:00 A.M

Como obtener la diferencia entre esas dos fechas pero considerando solamente
horas habiles (de 8 Am a 5 Pm por ejemplo)

Esto deseo lograrlo pero con Funciones de SQL Server no iterando entre
registros

Saludos cordiales, espero alguien pueda ayudarme.

Ivan Ruiz


Preguntas similares