【问题标题】:JavaScript datetime stamp to SqlDateTime with millisecondsJavaScript 日期时间戳到 Sql DateTime,以毫秒为单位
【发布时间】:2016-08-02 14:36:09
【问题描述】:

我以 1/1000 的全毫秒保真度记录了 JS 日期时间戳。 (使用 SQL 我理解精度是 1/300)

我一直在使用 .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);

问题是方法抛出异常:

"message": "最佳重载方法匹配 '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)' 有一些无效参数

【问题讨论】:

  • 如果您使用的是 SQL Server 2008 或更新版本,请改用DATETIME2(n) - 精度低至 100ns(如果需要) - 因此它可以处理毫秒还好

标签: c# datetime sqldatetime


【解决方案1】:

如果您需要将时间存储到毫秒,那么您应该为您的数据使用datetime2 或datetimeoffset。

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

【讨论】:

    猜你喜欢
    • 2016-07-07
    • 2016-09-06
    • 1970-01-01
    • 2017-05-28
    • 2023-03-11
    • 1970-01-01
    • 2018-01-10
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多