このリンク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();
}
}