2005/8/21, Tom Lane <tgl@xxxxxxxxxxxxx>: > Stephan Szabo <sszabo@xxxxxxxxxxxxxxxxxxxxx> writes: > > I think something like: > > (CASE WHEN extract(dow from date) = 0 THEN 7 else extract(dow from date)) > > It's really not that hard: > > (extract(dow from date) + 6) % 7 > > You can rotate to any week-start day you like by substituting different > things for "6". > > regards, tom lane > Not obvious as extract (isodow) but good enough for me. Thanks. But then i also need to order by year-week the same way mysql's yearweek (date, 3) so i did: drop table dates; create table dates (date timestamp); insert into dates values ('1990-01-01'); insert into dates values ('1990-12-31'); insert into dates values ('1991-01-01'); insert into dates values ('1991-12-31'); insert into dates values ('1992-01-01'); insert into dates values ('1992-12-31'); insert into dates values ('1993-01-01'); insert into dates values ('1993-12-31'); insert into dates values ('1994-01-01'); insert into dates values ('1994-12-31'); insert into dates values ('1995-01-01'); insert into dates values ('1995-12-31'); insert into dates values ('1996-01-01'); insert into dates values ('1996-12-31'); insert into dates values ('1997-01-01'); insert into dates values ('1997-12-31'); insert into dates values ('1998-01-01'); insert into dates values ('1998-12-31'); insert into dates values ('1999-01-01'); insert into dates values ('1999-12-31'); insert into dates values ('2000-01-01'); insert into dates values ('2000-12-31'); insert into dates values ('2001-01-01'); insert into dates values ('2001-12-31'); insert into dates values ('2002-01-01'); insert into dates values ('2002-12-31'); insert into dates values ('2003-01-01'); insert into dates values ('2003-12-31'); insert into dates values ('2004-01-01'); insert into dates values ('2004-12-31'); insert into dates values ('2005-01-01'); insert into dates values ('2005-01-02'); insert into dates values ('2005-01-03'); insert into dates values ('2005-01-04'); insert into dates values ('2005-01-05'); insert into dates values ('2005-01-06'); insert into dates values ('2005-01-07'); insert into dates values ('2005-01-08'); insert into dates values ('2005-01-09'); select date, to_char (date, 'Dy') as cday, extract (year from date - cast (((extract (dow from date) +6)::int % 7 -3)::text || ' day' as interval)) as yearweek, extract (week from date) as eweek, (extract (dow from date) +6)::int % 7 as edow from dates order by date; date | cday | yearweek | eweek | edow ---------------------+------+----------+-------+------ 1990-01-01 00:00:00 | Mon | 1990 | 1 | 0 1990-12-31 00:00:00 | Mon | 1991 | 1 | 0 1991-01-01 00:00:00 | Tue | 1991 | 1 | 1 1991-12-31 00:00:00 | Tue | 1992 | 1 | 1 1992-01-01 00:00:00 | Wed | 1992 | 1 | 2 1992-12-31 00:00:00 | Thu | 1992 | 53 | 3 1993-01-01 00:00:00 | Fri | 1992 | 53 | 4 1993-12-31 00:00:00 | Fri | 1993 | 52 | 4 1994-01-01 00:00:00 | Sat | 1993 | 52 | 5 1994-12-31 00:00:00 | Sat | 1994 | 52 | 5 1995-01-01 00:00:00 | Sun | 1994 | 52 | 6 1995-12-31 00:00:00 | Sun | 1995 | 52 | 6 1996-01-01 00:00:00 | Mon | 1996 | 1 | 0 1996-12-31 00:00:00 | Tue | 1997 | 1 | 1 1997-01-01 00:00:00 | Wed | 1997 | 1 | 2 1997-12-31 00:00:00 | Wed | 1998 | 1 | 2 1998-01-01 00:00:00 | Thu | 1998 | 1 | 3 1998-12-31 00:00:00 | Thu | 1998 | 53 | 3 1999-01-01 00:00:00 | Fri | 1998 | 53 | 4 1999-12-31 00:00:00 | Fri | 1999 | 52 | 4 2000-01-01 00:00:00 | Sat | 1999 | 52 | 5 2000-12-31 00:00:00 | Sun | 2000 | 52 | 6 2001-01-01 00:00:00 | Mon | 2001 | 1 | 0 2001-12-31 00:00:00 | Mon | 2002 | 1 | 0 2002-01-01 00:00:00 | Tue | 2002 | 1 | 1 2002-12-31 00:00:00 | Tue | 2003 | 1 | 1 2003-01-01 00:00:00 | Wed | 2003 | 1 | 2 2003-12-31 00:00:00 | Wed | 2004 | 1 | 2 2004-01-01 00:00:00 | Thu | 2004 | 1 | 3 2004-12-31 00:00:00 | Fri | 2004 | 53 | 4 2005-01-01 00:00:00 | Sat | 2004 | 53 | 5 2005-01-02 00:00:00 | Sun | 2004 | 53 | 6 2005-01-03 00:00:00 | Mon | 2005 | 1 | 0 2005-01-04 00:00:00 | Tue | 2005 | 1 | 1 2005-01-05 00:00:00 | Wed | 2005 | 1 | 2 2005-01-06 00:00:00 | Thu | 2005 | 1 | 3 2005-01-07 00:00:00 | Fri | 2005 | 1 | 4 2005-01-08 00:00:00 | Sat | 2005 | 1 | 5 2005-01-09 00:00:00 | Sun | 2005 | 1 | 6 (39 rows) I am not sure it is bullet proof. If no one comes up with something simpler, it looks like extract (yearweek) would be welcome. Regards, Clodoaldo Pinto ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your message can get through to the mailing list cleanly