On Mon, Nov 16, 2009 at 3:02 AM, Jasen Betts <jasen@xxxxxxxxxx> wrote: > On 2009-11-16, Konstantin Izmailov <pgfizm@xxxxxxxxx> wrote: >> --000e0cd5d09230ff7d04787526aa >> Content-Type: text/plain; charset=ISO-8859-1 >> >> I'm trying to read "money" field using PQgetvalue (PostgreSQL 8.3.7). The >> function returns 9 bytes, smth like 0h 0h 0h 0h 0h 0h 14h 0h 0h, for the >> value '$50.2'. I could not find description anywhere on how to convert the >> binary data into, for example, a double precision number. > > money is a 64 bit integer representing a number of cents, it appears > to be big-endian byte order on ypur system > > it is deprecated and should not be used in new applications, use some > sort of numeric instead. > >> Would you please help me find a method of converting binary "money" data >> into a double precision? > > floating point is not recomended for financial calculations, but > dividing the integer value by 100.0 should get you there. if you are reading/writing binary data to/from postgres, you should consider using libpqtypes: PGmoney m; res = PQexecf(conn, "INSERT INTO foo(m) values(%money) returning m", m); PQgetf(res, 0, "#money", "m", &m); /* # notation pulls field by name */ boy, this question sure seems to come up an awful lot! merlin -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general