【发布时间】: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