2016-08-02 4 views
1

У меня есть метка даты JS, записанная с полной миллисекундной точностью 1/1000. (с использованием SQL Я понимаю, точность 1/300)JavaScript datetime штамп для SqlDateTime с миллисекундами

Я использую .NET System.DateTime struct и я не было видеть миллисекунды которые хранятся в SQL.

... 
[ResponseTimeStamp] DATETIME   NOT NULL, 
... 

с C#

//TimeCompleted is epoc 

    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
    qr.ResponseTimeStamp = dtDateTime.AddMilliseconds(item.Responses.TimeCompleted); 

Я сейчас пытаюсь использовать System.Data.SqlTypes.SqlDateTime с

SqlDateTime dtDateTime = new SqlDateTime(1970, 1, 1, 0, 0, 0, 0); 
qr.ResponseTimeStamp = SqlDateTime.Add(dtDateTime, item.Responses.TimeCompleted); 

вопрос в том, что метод бросает исключение:

"сообщение" : «Наилучшее перегруженное соответствие метода для 'System.Data.SqlTypes.SqlDateTime.Add (System.Data.SqlTypes.SqlDateTime, System.TimeSpan)'

Я попытался преобразования из epoc в TimeSpan, но подпись требует TimeSpan, который я создавать, но все же выдает исключение.

TimeSpan newSpan = new TimeSpan(0, 0, 0, 0, item.Responses.TimeCompleted); 

Лучший перегружен матч метод 'System.Data.SqlTypes.SqlDateTime.Add (System.Data.SqlTypes.SqlDateTime, System.TimeSpan)' имеет некоторые недопустимые аргументы

+0

Если вы используете SQL Server ** 2008 ** или новее, вместо этого используйте 'DATETIME2 (n)' - это имеет точность до 100ns (если необходимо) - так что она будет обрабатывать миллисекунды просто отлично –

ответ

2

Если вам нужно сохранить время до миллисекунды, то для ваших данных вы должны использовать datetime2 или datetimeoffset.

Оба эти типа допускают точность вплоть до миллисекунды в отличие от DateTime, которая имеет разрешение 3 миллисекунды.

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