Nedělej
param.Value = dt.ToShortDateString();
nechat jen
param.Value = dt;
Pokoušíte se vložit řetězec do pole DateTime - PostgreSQL si jistě bude stěžovat.
Pokud se chcete vyhnout ztrátě časových informací, použijte NpgsqlTypes.NpgsqlDbType.Timestamp.