需要在数据库中保存带时区的时间戳。表中的目标字段声明为
"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”。提前感谢任何解决方案。
答案 0 :(得分:1)
通过存储手动映射到DateTimeOffset的附加时间戳RTT字段解决了问题。