Would this be correct? DatumGetTimestamp(DirectFunctionCall3(timestamp_in, CStringGetDatum(time), PointerGetDatum(0), Int32GetDatum(MAX_TIMESTAMP_PRECISION)));
This is how timestamp_in starts, *#ifdef NOT_USED* is a litle bit confusing. Datum timestamp_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); #ifdef NOT_USED Oid typelem = PG_GETARG_OID(1); #endif int32 typmod = PG_GETARG_INT32(2);