Не правете
param.Value = dt.ToShortDateString();
напусни просто
param.Value = dt;
Опитвате се да вмъкнете низ в полето DateTime - със сигурност PostgreSQL ще се оплаче.
използвайте NpgsqlTypes.NpgsqlDbType.Timestamp, ако искате да избегнете загуба на информация за времето