Você pode arredondar a data atual para 30 minutos como:
select dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Explicação:isso leva o número de minutos desde a data 0:
datediff(mi,0,getdate())
Em seguida, arredonda para um múltiplo de 30, dividindo e multiplicando por 30:
datediff(mi,0,getdate())/30*30
O resultado é adicionado de volta à data 0 para encontrar o último bloco de 30 minutos
dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Isso pode ser ajustado facilmente por 60 minutos. :)