Thread: Converting RFC 2822 "timestamp" to timestampz
I have a RFC2822 timestamp (example: Thu, 21 Dec 2000 16:01:07 +0200). I need to convert it to "timestampz" but I stumbled on the timezone conversion. The code follows: $timestamp = date( 'Y-m-d H:i:s O', strtotime( $rfc2822_timestamp) ); Unfortunately the supported formats for timezone in PHP and PostgreSQL differs. Pgsql requires zone name or offset in the format "H:M" (http://www.postgresql.org/docs/8.0/static/datatype-datetime.html#DATATYPE-TIMEZONE-TABLE). The "date" function in PHP (versions up to 5.0) supports the following two formats: "Difference to Greenwich time (GMT) in hours. Example: +0200" and "Timezone offset in seconds: -43200 through 43200". Of course I could play a little bit with last number (converting it to "hours:minutes") but it seems unnatural. Am I missing something? -- Milen A. Radev
On Wednesday 12 October 2005 12:14, Milen A. Radev wrote: > I have a RFC2822 timestamp (example: Thu, 21 Dec 2000 16:01:07 > +0200). I need to convert it to "timestampz" but I stumbled on the > timezone conversion.... The following works for me: # select 'Thu, 21 Dec 2000 16:01:07 +0200'::timestamptz; timestamptz ------------------------ 2000-12-21 06:01:07-08 Cheers, Steve
On 12/10/05, Steve Crawford <scrawford@pinpointresearch.com> wrote: > On Wednesday 12 October 2005 12:14, Milen A. Radev wrote: > > I have a RFC2822 timestamp (example: Thu, 21 Dec 2000 16:01:07 > > +0200). I need to convert it to "timestampz" but I stumbled on the > > timezone conversion.... > > The following works for me: > > # select 'Thu, 21 Dec 2000 16:01:07 +0200'::timestamptz; > > timestamptz > ------------------------ > 2000-12-21 06:01:07-08 You are so right! I was confused by another bug in my query to believe that the RFC2822 format is unacceptable. -- Milen A. Radev