The following bug has been logged online:

Bug reference:      1563
Logged by:          Dirk Raetzel
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.0.1
Operating system:   i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2
(mingw-special)
Description:        wrong week returnded by date_trunc('week', ...)
Details: 

date_trunc('week', ...) returns the wrong week for first days in January if
their calendar week belongs to the previous week.

Example: 
select date_trunc('week', timestamp '2005-01-01');
gives: 2006-01-02 00:00:00 but 2004-12-27 00:00:00 would be right.

sample code:

create table weektest (
        date timestamp
);

copy weektest from STDIN;
'1999-01-01'
'2000-01-01'
'2001-01-01'
'2002-01-01'
'2003-01-01'
'2004-01-01'
'2005-01-01'
'2006-01-01'
'2007-01-01'
'2008-01-01'
'2009-01-01'
\.

        date         |       week_t        | week_p 
---------------------+---------------------+--------
 1999-01-01 00:00:00 | 2000-01-03 00:00:00 |     53
 2000-01-01 00:00:00 | 2000-12-25 00:00:00 |     52
 2001-01-01 00:00:00 | 2001-01-01 00:00:00 |      1
 2002-01-01 00:00:00 | 2001-12-31 00:00:00 |      1
 2003-01-01 00:00:00 | 2002-12-30 00:00:00 |      1
 2004-01-01 00:00:00 | 2003-12-29 00:00:00 |      1
 2005-01-01 00:00:00 | 2006-01-02 00:00:00 |     53
 2006-01-01 00:00:00 | 2006-12-25 00:00:00 |     52
 2007-01-01 00:00:00 | 2007-01-01 00:00:00 |      1
 2008-01-01 00:00:00 | 2007-12-31 00:00:00 |      1
 2009-01-01 00:00:00 | 2008-12-29 00:00:00 |      1
(11 rows)

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to