Thread: help on to_date conversion please....

help on to_date conversion please....

From
Chris Pesko
Date:
I am converting an 8 digit number to a date.  I don't see a postgres
function to do it direct, but two functions seems like I'm on the right
track, to_char and to_date.  Individually I get them to work, but when I
combine them I get the wrong answer.  see below.  Can anyone help in
getting the right date from an 8 digit number input formatted as yyyymmdd?


hwds=# select to_char(20020101, '99999999');
   to_char
-----------
   20020101    CORRECT.
(1 row)

hwds=# select to_date('20020101','yyyymmdd');
   to_date
------------
  2002-01-01    CORRECT.
(1 row)

hwds=# select to_date(to_char(20020101, '99999999'),'yyyymmdd');
   to_date
------------
  2003-08-12     WHY DOES IT GIVE ME DIFFERENT ANSWER WHEN I COMBINE THE
FUNCTIONS?
(1 row)


Re: help on to_date conversion please....

From
Chris Pesko
Date:
Never mind.  Just figured it out.  Need to grab the substring from 2 for 8
from the to_char result because it holds character number 1 reserv ed for +
or - signs.  + is default or white space.  I think that is the reason.  Any
other input?????

hwds=# select to_date(substring(to_char(20020101, '99999999') from 2 for
8), 'yyyymmdd');
   to_date
------------
  2002-01-01
(1 row)

At 03:13 PM 4/3/02 -0800, Chris Pesko wrote:
>I am converting an 8 digit number to a date.  I don't see a postgres
>function to do it direct, but two functions seems like I'm on the right
>track, to_char and to_date.  Individually I get them to work, but when I
>combine them I get the wrong answer.  see below.  Can anyone help in
>getting the right date from an 8 digit number input formatted as yyyymmdd?
>
>
>hwds=# select to_char(20020101, '99999999');
>   to_char
>-----------
>   20020101    CORRECT.
>(1 row)
>
>hwds=# select to_date('20020101','yyyymmdd');
>   to_date
>------------
>  2002-01-01    CORRECT.
>(1 row)
>
>hwds=# select to_date(to_char(20020101, '99999999'),'yyyymmdd');
>   to_date
>------------
>  2003-08-12     WHY DOES IT GIVE ME DIFFERENT ANSWER WHEN I COMBINE THE
> FUNCTIONS?
>(1 row)
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org



Re: help on to_date conversion please....

From
Stephan Szabo
Date:
On Wed, 3 Apr 2002, Chris Pesko wrote:

> Never mind.  Just figured it out.  Need to grab the substring from 2 for 8
> from the to_char result because it holds character number 1 reserv ed for +
> or - signs.  + is default or white space.  I think that is the reason.  Any
> other input?????

You might want to try the FM format on the to_char string...
sszabo=#  select to_date(to_char(20020101, 'FM99999999'),'yyyymmdd');
  to_date
------------
 2002-01-01
(1 row)


Re: help on to_date conversion please....

From
Chris Pesko
Date:
Thanks.  That seems a better way to go.

At 03:47 PM 4/3/02 -0800, Stephan Szabo wrote:

>On Wed, 3 Apr 2002, Chris Pesko wrote:
>
> > Never mind.  Just figured it out.  Need to grab the substring from 2 for 8
> > from the to_char result because it holds character number 1 reserv ed for +
> > or - signs.  + is default or white space.  I think that is the reason.  Any
> > other input?????
>
>You might want to try the FM format on the to_char string...
>sszabo=#  select to_date(to_char(20020101, 'FM99999999'),'yyyymmdd');
>   to_date
>------------
>  2002-01-01
>(1 row)



Re: help on to_date conversion please....

From
Karel Zak
Date:
On Wed, Apr 03, 2002 at 04:02:11PM -0800, Chris Pesko wrote:
> Thanks.  That seems a better way to go.

 The PostgreSQL docs is your good friend :-)

> At 03:47 PM 4/3/02 -0800, Stephan Szabo wrote:
>
> >You might want to try the FM format on the to_char string...
> >sszabo=#  select to_date(to_char(20020101, 'FM99999999'),'yyyymmdd');
> >   to_date
> >------------
> >  2002-01-01
> >(1 row)

 The extra space is very common for all to_...() outputs/inputs and is
 needful thing of this. Don't ask me why.. it's Oracle idea.

    Karel

--
 Karel Zak  <zakkr@zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/

 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz