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@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] 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@sss.pgh.pa.us> wrote:
> "Merlin Moncure" <mmoncure@gmail.com> 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/