X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [64.117.224.130]) by svr1.postgresql.org (Postfix) with ESMTP id 92A25D1B4F1 for ; Sun, 28 Sep 2003 19:45:44 +0000 (GMT) Received: from svr1.postgresql.org ([64.117.224.193]) by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024) with ESMTP id 09893-05 for ; Sun, 28 Sep 2003 16:45:35 -0300 (ADT) Received: from sss.pgh.pa.us (unknown [192.204.191.242]) by svr1.postgresql.org (Postfix) with ESMTP id CEE30D1B4E1 for ; Sun, 28 Sep 2003 16:45:33 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.12.10/8.12.10) with ESMTP id h8SJjM6c010802; Sun, 28 Sep 2003 15:45:22 -0400 (EDT) To: Dan Langille Cc: pgsql-sql@postgresql.org Subject: Re: In-reply-to: <20030928151910.S78282@laptop.unixathome.org> References: <20030928151910.S78282@laptop.unixathome.org> Comments: In-reply-to Dan Langille message dated "Sun, 28 Sep 2003 15:24:59 -0400" Date: Sun, 28 Sep 2003 15:45:22 -0400 Message-ID: <10801.1064778322@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200309/367 X-Sequence-Number: 15345 Dan Langille writes: > WHERE lastlogin between current_date - interval \''' || > quote_literal(i - 1) || '' days\' > AND current_date - interval \''' || > quote_literal(i) || '' days\'''; IIRC, quote_literal() puts single quotes around its result. So you have too many quotes there. Given that you know i is an integer, you don't really need quote_literal for it. Actually, you don't need EXECUTE here at all. Why not just FOR i IN 1..MaxDays LOOP SELECT count(*) INTO r FROM users WHERE lastlogin between current_date - (i-1) * interval ''1 day'' AND current_date - i * interval ''1 day''; RETURN NEXT r; END LOOP; regards, tom lane