提问者:小点点

如何读取Postgres TIMESTAMPTZ作为.NET核心DateTimeOffset


我找不到一种方法如何读取postgres时间戳ptz作为。NETDateTimeOffset值。根据留档,这似乎是可能的。有人能描述如何处理这个问题吗?

我正在使用: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'

共1个答案

匿名用户

默认情况下,DateTime值由命令读取。ExecuteScalar()。有阅读器方法GetFieldValue

更多详情:https://github.com/npgsql/npgsql/issues/2641