【问题标题】:SQL Server Compact 4.0 DateTime precision does not include secondsSQL Server Compact 4.0 DateTime 精度不包括秒
【发布时间】:2012-11-06 10:48:03
【问题描述】:

根据此链接http://msdn.microsoft.com/en-us/library/ms172424.aspx SQL Server Compact Edition 4.0 支持DateTime 具有通常的 SQL Server 精度(秒和毫秒到 3.33)。

但是,我正在使用 SQL Server CE ADO.NET 提供程序和 DateTime 创建记录,但数据仅以分钟精度存储。

我创建了 SQL 来返回带有 DataReader.GetDateTime(x) 的数据,并且返回的值没有秒或毫秒。

SQL Server Compact 4.0 是否真的支持较低的精度?

我的 DDL 是:

CREATE TABLE [Message]
(
   [Id] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
   [CreatedTimestamp] DATETIME NOT NULL,
   [ProcessedTimestamp] DATETIME NOT NULL,
   [QueueName] NVARCHAR(255) NOT NULL,
   [MessageType] NVARCHAR(512) NOT NULL,
   [MessageContent] NTEXT NOT NULL,
   [MessageState] INT NOT NULL DEFAULT 0
);

我的代码是:

using (SqlCeConnection connection = new SqlCeConnection(connectionString))
{
   connection.Open();

   using (SqlCeCommand command = new SqlCeCommand(
        "INSERT INTO Message " +
        "(Id, CreatedTimestamp, ProcessedTimestamp, QueueName, MessageType, MessageContent)" +
        "VALUES " +
        "(@Id, @CreatedTimestamp, @ProcessedTimestamp, @QueueName, @MessageType, @MessageContent)", connection))
   {
       command.Parameters.Add(new SqlCeParameter("@Id", message.MessageId) { DbType = DbType.Guid });
       command.Parameters.Add(new SqlCeParameter("@CreatedTimestamp", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff")) { DbType = DbType.DateTime });
       command.Parameters.Add(new SqlCeParameter("@ProcessedTimestamp", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff")) { DbType = DbType.DateTime });
       command.Parameters.Add(new SqlCeParameter("@QueueName", queue) { DbType = DbType.String });

       //Code snipped...

       command.ExecuteNonQuery();
    }
}

【问题讨论】:

  • 你为什么要转换成字符串,然后再转换回日期时间?
  • 说实话,这是一个错误。但是我已将代码更改为 ...DateTime.UtcNow) { DbType = DbType.DateTime } 似乎没有任何区别

标签: sql-server-ce sql-server-ce-4


【解决方案1】:

我有类似的问题。我的原因是使用 SDF Viewer 来探索数据库。此应用程序不在日期时间字段中显示秒和毫秒。但是 SQL Server Compact 4.0 实际上以高精度存储日期时间,正如它所记录的那样。

这个问题很老了,但也许我的回答对某人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2015-11-24
    • 1970-01-01
    • 2014-08-07
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多