Vous pouvez arrondir la date actuelle à 30 minutes comme :
select dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Explication :ceci prend le nombre de minutes depuis la date 0 :
datediff(mi,0,getdate())
Ensuite, il arrondit cela à un multiple de 30 en divisant et en multipliant par 30 :
datediff(mi,0,getdate())/30*30
Le résultat est rajouté à la date 0 pour trouver le dernier bloc de 30 minutes
dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Cela peut être ajusté facilement pendant 60 minutes. :)