You must format DateTime.Now
the way postgreSQL (or any RDBMS for that matter) expects it.
var insertSql = string.Format("insert into ReportTable values (
'{0}', '{1:your format here}',)",
message.Id, DateTime.Now);
For example, if your RDBMS expects dates in the day-month-year format, then you need to pass this:
var insertSql = string.Format("insert into ReportTable values (
'{0}', '{1:dd-MM-yyyy}',)",
message.Id, DateTime.Now);
Of course you could also use parameter objects as Jon Skeet suggested, although there could be a reason why you specifically want to use a string
.