1

データベースにタイムゾーンを含むタイムスタンプを保存する必要があります。テーブルのターゲット フィールドは次のように宣言されています。

"UploadTime" timestamp with time zone

コマンドパラメータを使用してデータを挿入しています:

var uploadTime = DateTimeOffset.Now;
var insertQuery = @"INSERT INTO ""Table"" (""UploadTime"") VALUES :uploadTime"; 
var uploadTimeParam = new NpgsqlParameter("uploadTime", NpgsqlDbType.TimestampTZ);
uploadTimeParam.Value = uploadTime;
var insertCommand = new NpgsqlCommand(insertQuery, databaseConnection);
insertCommand.Parameters.Add(uploadTimeParam);

値は、タイム ゾーンなしの DateTime として格納され、返されます。これは、「タイムゾーン付きのタイムスタンプ」データベースタイプがデフォルトで DateTime にマップされているためだと思います。おそらく、ソースをチェックアウトして TimestampTZ にそれぞれ変更を加えることで修正できますが、Nuget を使用してプロジェクトの依存関係を管理するという考えが妨げられます。たぶん、それを達成するためのもう少し複雑な方法がありますか? ティックを保存して DateTimeOffset に変換することはオーバーヘッドです。私の場合、クエリの実行前に「SET TIME ZONE INTERVAL」をハックするとうまくいきませんでした。解決策を事前に感謝します。

4

1 に答える 1

1

DateTimeOffset に手動でマップする追加のタイムスタンプ RTT フィールドを保存することで問題を解決しました。

于 2013-03-05T07:47:32.920 に答える