【发布时间】:2015-09-14 18:32:04
【问题描述】:
我正在使用 Npgsql 从 Postgres 中的表中进行选择。此表有一个列auction_time,其类型为time without time zone。读者返回的数据表将此列auction_time 转换为DateTime,而不是我期望的TimeSpan。将数据批量复制到 MS SQLServer 中 time(7) 类型的另一个表时,这会导致问题。
这里是我选择的地方:
using (NpgsqlConnection connection = new NpgsqlConnection(String.Format(PropertyDataDB.ConnectionStringWithSearchPath, schemaName)))
{
connection.Open();
NpgsqlCommand command = new NpgsqlCommand
{
CommandText = commandText,
Connection = connection
};
using (NpgsqlDataReader dataReader = command.ExecuteReader())
{
DataTable dt = new DataTable();
//dt = dataReader.GetSchemaTable();
dt.Load(dataReader);
BulkCopy(destinationTable, dt);
}
}
所以 dt 中的 auction_type 将是 DateTime 类型,并且所有时间都会在其前面附加日期 1/1/0001。我怎样才能防止这种情况发生?
谢谢。
【问题讨论】:
-
这是 .NET/PSQL 类型的转换表 - npgsql.org/doc/datetime.html。似乎 Time w/o TZ 确实列出了时间跨度。也许有一个错误需要报告(或者文档不清楚)?
-
我在 github 上提交了一个错误,他们同意这是 2.2.5 版本中的错误,但在 3.x 版本中已修复。不幸的是,3.x 中有一些重大变化。
-
您有指向重大更改列表的链接吗?我也在 2.x 上,但我似乎找不到完整的列表,只是一些不完整的里程碑列表。
-
下面我的一个答案有一个指向 3.0 迁移文档的链接。
标签: c# postgresql npgsql