I have a requirement to round a datetime2 value down to the nearest half hour. For example \'10/17/2013 12:10:00.123\' would round down to \'10/17/2013 12:00:00.0\' And \'10
select cast(floor(cast( cast('10/17/2013 12:34:00' as datetime) as float(53)) * 48) / 48 as datetime)
EDIT
Works better if you use smalldatetime to avoid the extra precision
select cast(floor(cast( cast('2012-01-02 11:33:14.097' as smalldatetime) as float(53)) * 48) / 48 as smalldatetime)