Мне нужно сохранить некоторые интервалы в mssql db. Я знаю, что точность datetime составляет ок. 3,3 мс (может заканчиваться только 0, 3 и 7). Но когда я вычисляю интервалы между датами, я вижу, что результат может заканчиваться только 0, 3 и 6. Таким образом, чем больше интервалов я суммирую, тем больше теряется точность. Можно ли получить точный DATEDIFF в миллисекундах?SQL Server DATEDIFF точность
declare @StartDate datetime
declare @EndDate datetime
set @StartDate='2010-04-01 12:00:00.000'
set @EndDate='2010-04-01 12:00:00.007'
SELECT DATEDIFF(millisecond, @StartDate, @EndDate),@[email protected], @StartDate, @EndDate
Я хотел бы видеть 7 объявлений не 6. (И это должно быть как можно быстрее)
** Обновление **
Я могу видеть значение DATEDIFF окончания не только с 0 , 3, 6, но также 4, 7 (могут быть и другие), но дело в том, что они все еще неточны. Решение, предложенное Алексом, работает. То же самое можно achived, если вы не wan't помнить правильный формат DATETIME с:
SELECT DATEDIFF(SECOND, @StartDate, @EndDate)*1000 + DATEPART(MILLISECOND , @EndDate) - DATEPART(MILLISECOND , @StartDate)
Я до сих пор удивляюсь, почему DATEDIFF(millisecond, @StartDate, @EndDate)
неточна?
Какую версию MSSQL вы используете? Возможно ли обновление до 2008 года? –
MSSQL2005, к сожалению нет. – jomi