Puoi arrotondare la data corrente a 30 minuti come:
select dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Spiegazione:questo richiede il numero di minuti dalla data 0:
datediff(mi,0,getdate())
Quindi lo arrotonda a un multiplo di 30 dividendo e moltiplicando per 30:
datediff(mi,0,getdate())/30*30
Il risultato viene aggiunto di nuovo alla data 0 per trovare il blocco degli ultimi 30 minuti
dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Questo può essere regolato facilmente per 60 minuti. :)