Re: Binary Format of Timestamp
От | Michael Fuhr |
---|---|
Тема | Re: Binary Format of Timestamp |
Дата | |
Msg-id | 20050628060019.GA18379@winnie.fuhr.org обсуждение исходный текст |
Ответ на | Binary Format of Timestamp (Joe Joe <fondwey@yahoo.com>) |
Список | pgsql-novice |
On Tue, Jun 21, 2005 at 06:28:05AM -0700, Joe Joe wrote: > > I have a timestamp in a database that is beeing > returned in pgAdmin as "2005-06-21 11:21:47", exactly > as entered. When i retrieve the field via PQgetvalue i > get 8 bytes worth of data that i can not interpret. > ColumnType is TIMESTAMPOID, and the field content is > binary, size is 8 bytes, also all as expected. > I expect the timestamp format to be a float8 type > containing the seconds elapsed sind the 1.1.2000. This > should roughly be something around 172668107, give and > take a few timezone adjustments. What i get back from > PQgetvalue is the following array of bytes: > > 0: 0x00 > 1: 0x00 > 2: 0x9d > 3: 0x0a > 4: 0x6d > 5: 0x2e > 6: 0x88 > 7: 0xc0 > > Handling these bytes like a double (i.e adjusting them > for network byteorder), returns a value of > 8.530937980114e-310#DEN. > But no matter how i order these bytes, i cannot make > sense of them. You're assuming that the value is a double, but what's your integer_datetimes setting? I notice that the above bytes unpacked as a 64-bit integer give exactly the number you guessed, multiplied by one million: % perl -le 'print unpack("q", pack("C*", 0xc0, 0x88, 0x2e, 0x6d, 0x0a, 0x9d, 0x00, 0x00))' 172668107000000 -- Michael Fuhr http://www.fuhr.org/~mfuhr/
В списке pgsql-novice по дате отправления: