Jangan lakukan
param.Value = dt.ToShortDateString();
tinggalkan saja
param.Value = dt;
Anda mencoba memasukkan string ke dalam bidang DateTime - pasti PostgreSQL akan mengeluh.
gunakan NpgsqlTypes.NpgsqlDbType.Timestamp jika Anda ingin menghindari kehilangan informasi waktu