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