I too at times have struggled with the error using Clarion & Postgres.
In addition to problems with timestamps in keys, one gets the error when a dct has a string instead of a cstring defined for a Postgres varchar. These are the first 2 problems I check when the error arises. After verifying the field types, I also do a complete regenerate/recompile to insure that all tables are defined the same in every dll. While not so frequent, this has indeed solved the problem a couple of times.
Recently, I spent some significant time attempting to track a change that brought the error on a form procedure which previously had been fine. Unfortunately, I was not successful at finding the exact change but did solve the issue by specifying WATCH in the dct for every updateable table field on the form.
To know exactly why adding the attribute made the difference for this specific table MIGHT give a clue as to why the error unexpectedly arises for table fields without it.