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

daje mi tę samą odpowiedź .... Jak dodać dokładnie 1 milisekundę?Jak mogę dodać dokładnie 1 milisekundę?

Nie mogę użyć pola datetime2.

+0

możliwy duplikat [Dodawanie milisekund do datetime w tsql INSERT INTO] (http://stackoverflow.com/questions/2625178/adding-miliseconds-to-a-datetime-in-tsql-insert-into) – tvanfosson

+0

Zobacz również http://stackoverflow.com/questions/3380109/precision-of-sql-getdate – tvanfosson

Odpowiedz

9

trzeba przechowywać oddzielnie milisekund jeśli trzeba, że ​​dużo dokładności. W SQL Server 2005 nie ma natywnego typu daty/czasu, który pozwoli ci być bardziej precyzyjnym niż ~ 3 ms. Dlatego na przykład ostatni raz w ciągu dnia to 23: 59: 59.997, a nie .998 lub .999.

0

Myślę, że nie możesz, ponieważ DateTime s są reprezentowane wewnętrznie jako liczba zmiennoprzecinkowa, a 1 milisekunda nie może być reprezentowana jako float.

Aby uzyskać szczegółowe informacje, zapoznaj się z odpowiedziami to this question.

+0

Rzeczywiście nie możesz, ale nie z powodu podanego dokładnie. SQL Server przechowuje 'datetime' jako 2 liczby całkowite, jedną dla datepart i jedną dla czasu. Czas jest przechowywany jako 'ticks' przy każdym teście wynoszącym' 1/300' sekundy, więc ma to jedynie związek z wewnętrzną reprezentacją, a nie z "float" –

1

Rozdzielczość typu DATETIME jest niewystarczający dla potrzeb; za the documentation, to jest:

zaokrągleniu do przyrostach .000, 0,003, lub .007 sekund

Powiązane problemy