On Thu, 2011-06-23 at 13:26 -0700, Adrian Klaver wrote:

> On 06/23/2011 01:07 PM, Steve Crawford wrote:
> > On 06/23/2011 12:30 PM, hernan gonzalez wrote:
> >>
> >>
> >> On Thu, Jun 23, 2011 at 4:15 PM, Adrian Klaver
> >> <adrian.kla...@gmail.com <mailto:adrian.kla...@gmail.com>> wrote:
> >>
> >>     On 06/23/2011 11:40 AM, hernan gonzalez wrote:
> >>
> >>         Rather than being not viable, I'd argue that is is not correct.
> >>         Rather, a simple direct cast will suffice:
> >>         '2011-12-30 00:30:00'::timestamp without time zone
> >>
> >>
> >>         That works only for that particular format. The point is that, for
> >>         example, if I have some local date time
> >>         stored as a string in other format ('30/12/2011 00:30:00') I
> >>         cannot
> >>         reliably parse it as a TIMESTAMP. Which I should.
> >>
> >>
> >>     Works here. I am in US PDT:
> >>
> >>     select to_timestamp('30/12/2011 00:30:00', 'DD/MM/YYYY HH24:MI:SS
> >>     ')::timestamp with time zone;
> >>
> >>     to_timestamp
> >>     ------------------------
> >>     2011-12-30 00:30:00-08
> >>
> >>
> >> My point is to parse a TIMESTAMP WITHOUT TIME ZONE - and that that
> >> should NOT depend on the server/session TIMEZONE.
> >>
> >> Try this:
> >>
> >> # set TIMEZONE='XXX8';
> >> # select to_timestamp('2007-12-30 00:30:00','YYYY-MM-DD
> >> HH24:MI:SS')::timestamp;
> >> 2007-12-30 00:30:00
> >> # set TIMEZONE='America/Argentina/Buenos_Aires';
> >> select to_timestamp('2007-12-30 00:30:00','YYYY-MM-DD
> >> HH24:MI:SS')::timestamp;
> >> 2007-12-30 01:30:00
> > ...snip...
> >
> > Every example here starts, at its core, with to_timestamp. That function
> > returns a timestamp *with* time zone so of-course the current timezone
> > setting will influence it. Stop using it - it doesn't do what you want.
> >
> > If you cast directly to a timestamp *without* time zone you can take
> > advantage of the many formats PostgreSQL supports.
> >
> > See:
> > http://www.postgresql.org/docs/9.0/interactive/datatype-datetime.html#DATATYPE-DATETIME-DATE-TABLE
> > for supported formats. Note also that you can use "set datestyle" to
> > match your MDY or DMY date formatting.
> >
> > If the format you require is so obscure that PostgreSQL can't handle it
> > out-of-the-box (and the one you have presented is completely vanilla),
> > use the many string-handling functions to alter your input as necessary.
> 
> Possibly:
> test=> select (to_date('30/12/2007','DD/MM/YYYY') + 
> '00:30'::time)::timestamp;
>        timestamp
> ---------------------
>   2007-12-30 00:30:00
> (1 row)
> 
> 
> >
> > Cheers,
> > Steve
> >
> 
> 
> -- 
> Adrian Klaver
> adrian.kla...@gmail.com
> 


test=# SET datestyle to DMY;
SET
test=# select '30/12/2011 00:30:00'::timestamp;
      timestamp      
---------------------
 2011-12-30 00:30:00
(1 row)

test=# 

Reply via email to