Re: to_char function returning wrong data - Mailing list pgsql-bugs

From Tom Lane
Subject Re: to_char function returning wrong data
Date
Msg-id 8046.1549301519@sss.pgh.pa.us
Whole thread Raw
In response to to_char function returning wrong data  (Sreeni Survi <sreenisurvi@gmail.com>)
List pgsql-bugs
Sreeni Survi <sreenisurvi@gmail.com> writes:
> Below code has caused my data to be wiped off a table as my where clause
> depends on the below returned value.

> *select to_char(current_date - interval '5 weeks','IYYYWW') ;*
> *201953*

(For the archives, current_date - interval '5 weeks' is currently
'2018-12-31 00:00:00')

There's nothing wrong with to_char; it did what you told it to.

The problem here is that you're using ISO year numbering along with
non-ISO week numbering.  You should have written 'IYYYIW', which
would give consistent results:

regression=# select to_char(current_date - interval '4 weeks','IYYYIW') ;
 to_char 
---------
 201902
(1 row)

regression=# select to_char(current_date - interval '5 weeks','IYYYIW') ;
 to_char 
---------
 201901
(1 row)

regression=# select to_char(current_date - interval '6 weeks','IYYYIW') ;
 to_char 
---------
 201852
(1 row)

            regards, tom lane


pgsql-bugs by date:

Previous
From: Andrew Gierth
Date:
Subject: Re: to_char function returning wrong data
Next
From: Tom Lane
Date:
Subject: Re: BUG #15611: pg_dump output changes after doing a restore with certain views