2016-08-02 146 views
1

我有JS日期时间戳用完整的毫秒保真度1/1000记录。 (使用SQL据我所知,精度为1/300)JavaScript日期时间戳到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)'

我试图转换从epocTimeSpan,但签名需要时间跨度,我创建但仍会抛出异常。

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

如果您需要将时间存储为毫秒,那么您应该使用datetime2datetimeoffset作为数据。

这两种类型都允许精度降至毫秒,而DateTime只有3毫秒的分辨率。

相关问题