I have implemented a C++ procedure for inserting data using libpq and COPY WITH BINARY command. All field types are working as expected in PG9.2, except "date": ERROR: incorrect binary data format CONTEXT: COPY table, line 1, column date_xyz
The passed value for "date" is a 64-bit integer, calculated by the same way as the value for "timestamp". Should they be different?
Here is simplified fragment of code: typedef __int64 PGTimeStamp; ... pField->dataLength = htonl(sizeof(PGTimeStamp)); DBTIMESTAMP ts = { 2012, 10, 5, 0, 0, 0, 0 }; *(PGTimeStamp*)&pField->data = ConvertADOToPG(&ts); ... PGTimeStamp ConvertADOToPG(DBTIMESTAMP *ts) { double date = date2j(ts->year, ts->month, ts->day) - POSTGRES_EPOCH_JDATE; double time = time2t(ts->hour, ts->minute, ts->second, ts->fraction);