2015-11-18 28 views
6
SELECT 
    CAST(‘2015-01-01 14:48:34.69’ AS DATETIME) FirstVal, 
    CAST(‘2015-01-01 14:48:34:69’ AS DATETIME) SecondVal 

Wenn wir die Antwort suchen, gibt es einen Unterschied zwischen dem Teil Millisekunden in der Ergebnismenge, während Sie, dass in der SELECT Aussage feststellen kann ich verschiedene Millisekunden Teil angegeben haben. Die Frage ist, warum es einen Unterschied im Millisekundenbereich gibt, obwohl ich einen anderen Wert gewählt habe?Millisekunden in sql tsql

enter image description here

+0

ja es tut .... –

+0

I SELECT CAST versucht ('2015.01.01 14: 48: 34: 665' AS DATETIME-) FirstVal, CAST ("2015.01.01 14: 48: 34,665 'AS DATETIME) SecondVal und ich bekam sehr seltsames Ergebnis 2015-01-01 14: 48: 34.667 2015-01-01 14: 48: 34.667 – Moumit

Antwort

5

DATETIME hat eine Genauigkeit von 3.33ms - Sie werden nie sehen einen Wert mit einem .069 in einem DATETIME gespeichert - Sie jemals nur .xx0 bekommen, .xx3 und .xx7.

Wenn Sie Millisekundengenauigkeit benötigen, verwenden Sie stattdessen DATETIME2(3) (eingeführt in SQL Server) als Ihren Datentyp.

+0

Die Frage hat .69 nicht .069 –

+0

@MartinSmith: yeah, sah ich dass - aber ich fragte mich, ob das '' 690 'wirklich bedeutet - oder' .069' - musste einfach raten –

+0

Yep sieht aus wie ': 69' wird interpretiert als': 069' und gerundet, wobei '.69' wird nur als '.690' interpretiert. Die Doppelpunktnotation sieht so aus, als würde sie die Zahl nur nach Millisekunden behandeln. '14: 48: 34: 3 = 2015-01-01 14: 48: 34.003' –

0

Sie haben Diff Wert in Ersten Wert ausgewählt: -34,69 und Zweiter Wert: - 34:69. kann man beide Werte sehen, also diff diff.