Я выбираю из таблицы в Postgres, используя Npgsql. В этой таблице есть столбец auction_time
, который является типом time without time zone
. Таблица данных, которую читатель возвращает, отличает этот столбец auction_time
от DateTime
, а не TimeSpan
, как я ожидал. Это вызывает проблему при массовом копировании данных в другую таблицу в MS SQLServer типа time(7)
.Npgsql DataReader использует тип DateTime для времени без часового пояса, а не TimeSpan
Вот где я выбираю из:
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);
}
}
Так auction_type
в ДТ будет типа DateTime
и все время будет иметь дату 1/1/0001
прилагается к передней части его. Как я могу это предотвратить?
Спасибо.
Это таблица преобразования для типов .NET/PSQL - http://www.npgsql.org/doc/datetime.html. Кажется, что Time w/o TZ делает список раз. Возможно, есть ошибка в сообщении (или, возможно, документация нечеткая)? – StingyJack
Я отправил ошибку на github, они согласны с тем, что это ошибка в версии 2.2.5, но она исправлена в версии 3.x. К сожалению, в версии 3.x есть некоторые изменения. – Dave
У вас есть ссылка на список изменений? Я тоже на 2.x, но я не могу найти целый список, просто некоторые неполные списки веха. – StingyJack