首页 文章

使用带有Npgsql的时区的时间戳

提问于
浏览
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” . 提前感谢任何解决方案 .

1 回答

  • 1

    通过存储手动映射到DateTimeOffset的附加时间戳RTT字段解决了问题 .

相关问题