最も近い x 分に切り上げる関数が必要です。以下のものを見つけましたが、最も近い x 分に切り上げまたは切り捨てられます。別の値に基づいて、最も近い 30 分または 1 時間に切り上げる必要があります。
CREATE FUNCTION [dbo].[RoundTime] (@Time DATETIME, @RoundToMin INT)
RETURNS DATETIME
AS
BEGIN
RETURN ROUND(CAST(CAST(CONVERT(VARCHAR,@Time,121) AS DATETIME) AS FLOAT) * (1440/@RoundToMin),0)/(1440/@RoundToMin)
END
GO