Код:
DECLARE @var DATETIMEOFFSET(7) ;
-- Rounding up
SET @var = '2020-03-20 12:00:29.9999999 -08:00' ;
SELECT DATEADD ( ms, 500 - DATEPART ( ms, DATEADD ( MILLISECOND, 500, @var )), @var ) ;
-- Actual: 2020-03-20 12:00:30.0009999 -08:00
-- Expected: 2020-03-20 12:00:30.0000000 -08:00 -- Notice that precision is rounded up to '0000000'
-- Rounding down
SET @var = '2020-03-20 12:00:30.0000001 -08:00' ;
SELECT DATEADD ( ms, 500 - DATEPART ( ms, DATEADD ( MILLISECOND, 500, @var )), @var ) ;
-- Actual: 2020-03-20 12:00:30.0000001 -08:00
-- Expected: 2020-03-20 12:00:30.0000000 -08:00 -- Notice that precision is rounded down to '0000000'
GO
Цель: я хочу округлить до ближайших секунд, основываясь на миллисекундах <5 ###### или миллисекундах> = 5 ######. На данный момент мой запрос правильно округляет секунды, просто он не округляет точность до того, что я хочу, 0000000.