2012-03-21 2 views
5
select getdate(),DATEADD(millisecond,1,getdate()) 

дает мне тот же ответ .... Как добавить ровно 1 миллисекунду?Как я могу добавить ровно 1 миллисекунду?

Я не могу использовать поле datetime2.

+0

Возможный дубликат [Добавление miliseconds в datetime в tsql INSERT INTO] (http://stackoverflow.com/questions/2625178/adding-miliseconds-to-a-datetime-in-tsql-insert-into) – tvanfosson

+0

См. также http://stackoverflow.com/questions/3380109/precision-of-sql-getdate – tvanfosson

ответ

9

Вам нужно хранить миллисекунды отдельно, если вам нужно много точности. В SQL Server 2005 нет собственного типа даты/времени, который позволит вам быть точнее, чем ~ 3 мс. Вот почему, например, последний раз, когда вы можете получить за один день, это 23: 59: 59.997, а не .998 или .999.

0

Я думаю, что вы не можете, потому что DateTime s представлены как число с плавающей запятой внутри и 1 миллисекунда не могут быть представлены как float.

Подробнее см. Ответы to this question.

+0

Действительно, вы не можете, а не по той причине, которая дана точно. SQL Server хранит 'datetime' как 2 целых числа, один для datepart и один для времени. Время хранится как «тики», причем каждый тик равен «1/300» секунды, поэтому это просто связано с внутренним представлением, а не с чем-либо, связанным с 'float' –

6

Вы не можете. Точность datetime составляет 3,33 миллисекунды.

Date and Time

1

Разрешение DATETIME типа недостаточно для ваших нужд; за the documentation, это:

Округлые с шагом .000, .003 или .007 секунд

Смежные вопросы