Re: Binary Format of Timestamp - Mailing list pgsql-novice

From Michael Fuhr
Subject Re: Binary Format of Timestamp
Date
Msg-id 20050628060019.GA18379@winnie.fuhr.org
Whole thread Raw
In response to Binary Format of Timestamp  (Joe Joe <fondwey@yahoo.com>)
List 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 by date:

Previous
From: Tom Lane
Date:
Subject: Re: Binary Format of Timestamp
Next
From: Tom Lane
Date:
Subject: Re: [GENERAL] DANGER Windows version might hurt you