Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用带有时区的时间戳和Npgsql_C#_.net_Database_Npgsql_Postgresql 9.2 - Fatal编程技术网

C# 使用带有时区的时间戳和Npgsql

C# 使用带有时区的时间戳和Npgsql,c#,.net,database,npgsql,postgresql-9.2,C#,.net,Database,Npgsql,Postgresql 9.2,需要在数据库中保存带有时区的时间戳。表中的目标字段声明为 "UploadTime" timestamp with time zone 我正在使用命令参数插入数据: var uploadTime = DateTimeOffset.Now; var insertQuery = @"INSERT INTO ""Table"" (""UploadTime"") VALUES :uploadTime"; var uploadTimeParam = new NpgsqlParameter("upload

需要在数据库中保存带有时区的时间戳。表中的目标字段声明为

"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存储并返回,不带时区。我猜这是因为“timestamp with timezone”数据库类型默认映射为DateTime。也许可以通过签出源代码并对TimestampTZ进行相应的更改来解决这个问题,但这会干扰使用Nuget管理项目依赖关系的想法。也许有一些不那么复杂的方法来实现这一点?存储刻度并将其转换为DateTimeOffset是一项开销,在执行查询之前使用“设置时区间隔”的方法在我的情况下不起作用。提前感谢您提供的任何解决方案。

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

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

请展开更多内容explain@MohsenZahedi那是很久以前的事了,但我认为我刚刚为所需的datetime添加了第二个字段(UploadTimeRTT),该字段在应用程序代码中手动转换为DateTimeOffset,并对它们进行了维护。从数据库模式设计的角度来看,这不是很有效,但它确实有效。请进一步展开explain@MohsenZahedi这是很久以前的事了,但我想我刚刚为需要的datetime添加了第二个字段(UploadTimeRTT),该字段在应用程序代码中手动转换为DateTimeOffset,并对它们进行了维护。从数据库模式设计的角度来看,这不是很有效,但它确实有效。