I ran this:
Cmd.CommandText="select cast('1 year' as interval)";
object o=Cmd.ExecuteScalar();
The debugger shows that o contains a TimeSpan, so the year component goes away. This should return PgSqlInterval, shouldn't it?
ExecuteScalar returns TimeSpan for Interval
ExecuteScalar returns TimeSpan for Interval
Please use method PgSqlDataReader.GetPgSqlInterval() method to obtain a PgSqlInterval value.