14 votes

SQL Server 2008 Générer une série de dates-horaires

J'essaie de générer un tableau contenant une série de dates et d'heures.

J'ai la date de début et la date de fin spécifiées (la date de fin correspond à la fin de la séquence), j'ajoute un intervalle de temps ~ (qui peut varier) à la date de début en secondes et cela me donne la date de fin.

La séquence suivante utilise la date et l'heure de fin comme valeur de départ et y ajoute l'intervalle de temps en secondes. Pour démontrer la sortie dont j'ai besoin. Existe-t-il un moyen rapide de créer ce type de tableau, à part l'utilisation de nombreuses commandes d'insertion dans le tableau ?

StartTime               Endtime                 Duration
2011-07-20 11:00:33     2011-07-20 11:09:47     554
2011-07-20 11:09:47     2011-07-20 11:19:01     554

    declare @StartTime datetime = '2011-07-20 11:00:33',
    @EndTime datetime = '2011-07-20 15:37:34'
    @Interval int = 554 -- this can be changed.

    insert into tmp_IRange
    values('2011-07-20 11:00:33', DATEADD(SECONDS, @Duration, 2011-07-20 11:00:33))

cela devient très fastidieux surtout lorsque l'heure de la date de fin est 2011-07-20 15:37:34 il y a beaucoup de déclarations d'insertion à faire :(

0voto

Max Points 546

Veuillez essayer ce code :

create table #T (date_begin datetime, date_end datetime)    

declare @StartTime datetime = '2011-07-20 11:00:33',
    @EndTime datetime = '2011-07-20 15:37:34',
    @Interval int = 554 -- this can be changed.

while DATEADD(ss,@Interval,@StartTime)<=@EndTime
begin
    insert #T
    select @StartTime, DATEADD(ss,@Interval,@StartTime)

    set @StartTime = DATEADD(ss,@Interval,@StartTime)
end

select * from #T

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X