SQL Server Compact 4.0 DateTime 精度不包括秒

Posted

技术标签:

【中文标题】SQL Server Compact 4.0 DateTime 精度不包括秒【英文标题】:SQL Server Compact 4.0 DateTime precision does not include seconds 【发布时间】: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 似乎没有任何区别 【参考方案1】:

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

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

【讨论】:

以上是关于SQL Server Compact 4.0 DateTime 精度不包括秒的主要内容,如果未能解决你的问题,请参考以下文章

更改 SQL Server Compact 4.0 的排序规则

SQL Server Compact 4.0 DateTime 精度不包括秒

缺少 Sql Server Compact 4.0 提供程序

nlog 和 SQL Server Compact 4.0 的示例配置

使用 SQL Server Compact 4.0 在实体框架中进行 LIKE 查询

SQL Server Compact 4.0 图像列被截断为 8000