Cari tahu!
Rupanya lembar konversi yang saya ditautkan salah atau ketinggalan zaman. Ternyata objek System.TimeSpan adalah yang dibutuhkan Npgsql untuk melakukan konversi yang tepat ke objek "waktu" Postgresql. Tampaknya aneh bagi saya bahwa mereka akan mencoba mengubah sesuatu yang mewakili perbedaan antara dua waktu menjadi apa yang kita anggap sebagai HH:mm:dd tapi begitulah adanya.
Daripada mengubah jenis properti RunTime saya dari System.DateTime ke System.TimeSpan, saya malah membuat IUserType khusus dan mengganti NullSafeSet agar terlihat seperti
public override void NullSafeSet(IDbCommand cmd, object value, int index)
{
var obj = (DateTime)value;
((IDbDataParameter) cmd.Parameters[index]).Value = new TimeSpan(0, obj.Hour, obj.Minute, obj.Second);
}