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
.
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
.
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.
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.
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" –
Nie możesz. Dokładność datetime
wynosi 3,33 milisekund.
Rozdzielczość typu DATETIME
jest niewystarczający dla potrzeb; za the documentation, to jest:
zaokrągleniu do przyrostach .000, 0,003, lub .007 sekund
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
Zobacz również http://stackoverflow.com/questions/3380109/precision-of-sql-getdate – tvanfosson