Gør det ikke
param.Value = dt.ToShortDateString();
forlad bare
param.Value = dt;
Du forsøger at indsætte en streng i DateTime-feltet - sikker på, at PostgreSQL vil klage.
brug NpgsqlTypes.NpgsqlDbType.Timestamp, hvis du vil undgå at miste tidsoplysningerne