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
| DECLARE @DateEntree DateTime = '2001-01-01' --Date de début de génération
, @DateFin DateTime
SET @DateFin = DATEADD( DD, 2, @DateEntree );
select @DateFin, @DateEntree
;WITH DateCTE
AS
(
SELECT
CASE
WHEN CAST(@DateEntree AS TIME) = '00:00:00' THEN DATEADD(SS, 59, DATEADD(MI,-1,@DateEntree))
ELSE @DateEntree
END AS DateValue
UNION ALL
SELECT
CASE
WHEN CAST(DATEADD(MI,30,DateValue) AS TIME) = '00:00:00' THEN DATEADD(SS, 59, DATEADD(MI,29,DateValue))
WHEN CAST(DATEADD(MI,30,DateValue) AS TIME) = '00:29:59' THEN DATEADD(SS, -59, DATEADD(MI,31,DateValue))
ELSE DATEADD(MI,30,DateValue)
END
FROM DateCTE
WHERE DATEADD(MI,30,DateValue) <= @DateFin
)
select *
from DateCTE |
Partager