如何将 Postgres TIMESTAMPTZ 读取为 .NET Core DateTimeOffset
How to read Postgres TIMESTAMPTZ as .NET Core DateTimeOffset
我找不到将 postgres timestamptz 读取为 .NET DateTimeOffset 值的方法。根据文档,这似乎是可能的。谁能描述一下如何处理这个问题。
我正在使用:
Postgres:11.x
Npgsql: 4.1.0
代码片段极其简单:
using (var connection = new NpgsqlConnection(connectionString))
{
connection.Open();
using (var command = new NpgsqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "SELECT '2004-10-19 10:23:54+02'::timestamptz";
var o = (DateTimeOffset)command.ExecuteScalar();
Console.WriteLine(o);
}
}
它抛出从 DateTime 到 DateTimeOffset 的无效转换异常:
Unhandled Exception: System.InvalidCastException: Unable to cast object of type 'System.DateTime' to type 'System.DateTimeOffset'
默认情况下,DateTime
值由 command.ExecuteScalar()
读取。有 reader 方法 GetFieldValue<T>()
来获取 DateTimeOffset
值。这目前不适合我,但可能是一种解决方法。
我找不到将 postgres timestamptz 读取为 .NET DateTimeOffset 值的方法。根据文档,这似乎是可能的。谁能描述一下如何处理这个问题。
我正在使用: Postgres:11.x Npgsql: 4.1.0
代码片段极其简单:
using (var connection = new NpgsqlConnection(connectionString))
{
connection.Open();
using (var command = new NpgsqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.Text;
command.CommandText = "SELECT '2004-10-19 10:23:54+02'::timestamptz";
var o = (DateTimeOffset)command.ExecuteScalar();
Console.WriteLine(o);
}
}
它抛出从 DateTime 到 DateTimeOffset 的无效转换异常:
Unhandled Exception: System.InvalidCastException: Unable to cast object of type 'System.DateTime' to type 'System.DateTimeOffset'
默认情况下,DateTime
值由 command.ExecuteScalar()
读取。有 reader 方法 GetFieldValue<T>()
来获取 DateTimeOffset
值。这目前不适合我,但可能是一种解决方法。