SELECT CONVERT(VARCHAR(13), dt, 20) dt , MAX(dt) max_dt , COUNT(*) cnt , SUM(v) sum_v FROM t WHERE dt >= CAST(CONVERT(VARCHAR(13), DATEADD(hour, -1, getdate()), 20) + ':00:00' AS DATETIME) AND dt < CAST(CONVERT(VARCHAR(13), getdate() , 20) + ':00:00' AS DATETIME) GROUP BY CONVERT(VARCHAR(13), dt, 20) ;