dbo.QBM_FTDateTimeGaps
Inline Table FunctionSQL_INLINE_TABLE_VALUED_FUNCTIONSandbox DB
Interpretation
- Database function. Usually supports views, validation, or calculated predicates; look at referenced-by entries for callers.
Relations
- No extracted relations.
Typed Edges
- references source dbo.QBM_FGIDate source text reference
- references source dbo.QBM_FGIDateTimeSpanOverlap source text reference
Complete Source
1CREATE FUNCTION dbo.QBM_FTDateTimeGaps(2 @ExistingTimeSpans QBM_YDateTimePair READONLY3) RETURNS TABLE4RETURN(5 WITH ist6AS7(8SELECT9 e.FromDate, e.ToDate10FROM @ExistingTimeSpans e11UNION all12SELECT13 '1899-12-31', getutcdate())14SELECT15 l.FromDate AS GapStart,16 l.ToDate AS GapEnd17FROM ist i CROSS18JOIN(19SELECT20 x.FromDate, x.ToDate21FROM(22SELECT23 getutcdate() AS FromDate, dateadd(mi, -1, MIN(i.FromDate)) AS ToDate24FROM ist i25UNION all26SELECT27 dateadd(ms, 10, i1.ToDate), min(dateadd(mi, -1, i2.FromDate))28FROM ist i129JOIN ist i230 ON dateadd(mi, -1, i2.FromDate) > dateadd(ms, 10, i1.ToDate)31GROUP BY dateadd(ms, 10, i1.ToDate)32UNION all33SELECT34 dateadd(mi, 1, Max(ToDate)), '2200-01-01'35FROM ist) AS x36WHERE37 x.FromDate <= ToDate) AS l38GROUP BY l.FromDate,39l.ToDate40HAVING SUM(convert(int, dbo.QBM_FGIDateTimeSpanOverlap(i.FromDate, i.ToDate, l.FromDate, l.ToDate, 0))) = 0)
Open raw exported source
1create function dbo.QBM_FTDateTimeGaps( @ExistingTimeSpans QBM_YDateTimePair readonly ) returns table return ( with ist as (select e.FromDate , e.ToDate2 from @ExistingTimeSpans e union all select '1899-12-31', getutcdate() ) select l.FromDate as GapStart, l.ToDate as GapEnd from ist i cross join ( select3 x.FromDate, x.ToDate from ( select getutcdate() as FromDate, dateadd(mi, -1, MIN(i.FromDate)) as ToDate from ist i union all select dateadd(ms, 10,4 i1.ToDate), min(dateadd(mi, -1, i2.FromDate)) from ist i1 join ist i2 on dateadd(mi, -1, i2.FromDate) > dateadd(ms, 10, i1.ToDate) group by dateadd(ms5, 10, i1.ToDate) union all select dateadd(mi, 1, Max(ToDate)), '2200-01-01' from ist ) as x where x.FromDate <= ToDate ) as l group by l.FromDate, l.ToDate6 having SUM(convert(int, dbo.QBM_FGIDateTimeSpanOverlap(i.FromDate, i.ToDate, l.FromDate, l.ToDate, 0))) = 0 ) 7