Du kan runda av det aktuella datumet till 30 minuter som:
select dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Förklaring:detta tar antalet minuter sedan 0-datumet:
datediff(mi,0,getdate())
Sedan avrundas det till en multipel av 30 genom att dividera och multiplicera med 30:
datediff(mi,0,getdate())/30*30
Resultatet läggs tillbaka till 0-datumet för att hitta det sista 30-minutersblocket
dateadd(mi, datediff(mi,0,getdate())/30*30, 0)
Detta kan enkelt justeras i 60 minuter. :)