All of these statements produce 'f' for me as well, via 8.2.1 on RHEL 4. select ((now() - '1 day'::interval)::timestamp - now()) < 0; select ((now() - '1 day'::interval)::timestamptz - now()) < 0; select ('-1 days'::interval) < 0; But all of these return 't': select ((now() - '1 day'::interval)::timestamp - now()) < '0'::interval; select ((now() - '1 day'::interval)::timestamptz - now()) < '0'::interval; select ('-1 days'::interval) < '0'::interval; -----Original Message----- From: pgsql-general-owner@xxxxxxxxxxxxxx [mailto:pgsql-general-owner@xxxxxxxxxxxxxx] On Behalf Of Merlin Moncure Sent: Tuesday, February 20, 2007 8:30 AM To: Tom Lane Cc: postgres general Subject: Re: [GENERAL] boolean operator on interval producing strange results On 2/19/07, Tom Lane <tgl@xxxxxxxxxxxxx> wrote: > "Merlin Moncure" <mmoncure@xxxxxxxxx> writes: > > # select ((now() - '1 day'::interval)::timestamp - now()) < 0; > > ?column? > > ---------- > > f <-- looks busted to me > > (1 row) > > If you'd casted to timestamptz then I'd agree this is busted. > As-is, it might have something to do with your timezone setting, > which you didn't mention? show timezone reports us/eastern in both cases. also, i don't really see how this matters, since we are comparing '-1 days'::interval with 0 in both cases. in fact: # show timezone; TimeZone ------------ US/Eastern (1 row) # select ('-1 days'::interval) < 0; ?column? ---------- f (1 row) as it happens, after months and months of faithful service, this machine decided to dump core last night. so, we are scheduling some downtime + yum update. (my previous mail was wrong, production was the non-updated box). this is the only environmental difference I can think of. At the very least I can report back if this fixes the problem. merlin ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org/