1

根据此链接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();
    }
}
4

1 回答 1

0

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

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

于 2016-04-11T13:07:39.933 回答