1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| DECLARE @Ligne AS INT,@Debut AS DATETIME,@Fin AS DATETIME
SET @Ligne=1
SET @Debut='06/02/09 06:00'
SET @Fin='06/02/09 14:00'
-- Si ARE_DEBUT et ARE_FIN sont compris entre @Debut et @Fin
SELECT datediff(minute,ARE_DEBUT,ARE_FIN)/60.0 DUREE
FROM SECA_ARE
WHERE LIGNE=@Ligne
AND @Debut<=ARE_DEBUT AND ARE_FIN<=@Fin
UNION
-- Si ARE_DEBUT est compris entre @Debut et @Fin
SELECT datediff(minute,ARE_DEBUT,@Fin)/60.0 DUREE
FROM SECA_ARE
WHERE LIGNE=@Ligne
AND @Debut<=ARE_DEBUT AND @Fin>=ARE_DEBUT AND @Fin<ARE_FIN
UNION
-- Si ARE_FIN est compris entre @Debut et @Fin
SELECT datediff(minute,@Debut,ARE_FIN)/60.0 DUREE
FROM SECA_ARE
WHERE LIGNE=@Ligne
AND @Debut<=ARE_FIN AND @Fin>=ARE_FIN AND ARE_DEBUT<@Debut
UNION
-- Si @Debut et @Fin sont compris entre ARE_DEBUT et ARE_FIN
SELECT datediff(minute,@Debut,@Fin)/60.0 DUREE
FROM SECA_ARE
WHERE LIGNE=@Ligne
AND @Debut>ARE_DEBUT AND @Fin<ARE_FIN |
Partager