Обсуждение: bug?
What is the difference between these two queries? Is this a bug? select case when current_timestamp < '2002-12-06'::date + 1 then 'yes' else 'no' end; --> returns "yes" select case when current_timestamp < '2002-12-06'::date + 1::interval then 'yes' else 'no' end; --> returns "no" Thanks, -- Laurette Cisneros The Database Group (510) 420-3137 NextBus Information Systems, Inc. www.nextbus.com ---------------------------------- There's more to life than just SQL.
Laurette Cisneros wrote: > What is the difference between these two queries? Is this a bug? > > select case when current_timestamp < '2002-12-06'::date + 1 > select case when current_timestamp < '2002-12-06'::date + 1::interval Yes there is a difference: select '2002-12-06'::date + 1; ?column? ------------ 2002-12-07 (1 row) select '2002-12-06'::date + 1::interval; ?column? ------------------------ 2002-12-06 00:00:01+01 (1 row) As you can see, 1::interval means one second, not one day. /Oskar
Doh! Duh! Thanks! On Sat, 7 Dec 2002, Oskar Berggren wrote: > Laurette Cisneros wrote: > > What is the difference between these two queries? Is this a bug? > > > > > select case when current_timestamp < '2002-12-06'::date + 1 > > > select case when current_timestamp < '2002-12-06'::date + 1::interval > > Yes there is a difference: > > select '2002-12-06'::date + 1; > ?column? > ------------ > 2002-12-07 > (1 row) > > > select '2002-12-06'::date + 1::interval; > ?column? > ------------------------ > 2002-12-06 00:00:01+01 > (1 row) > > > As you can see, 1::interval means one second, not one day. > > /Oskar > -- Laurette Cisneros The Database Group (510) 420-3137 NextBus Information Systems, Inc. www.nextbus.com ---------------------------------- There's more to life than just SQL.
Just looks like to me that a non-qualified addition of one to a date data type increments by one day and a non-qualified interval increments by seconds (it's easier to strip off all the other junk in the query and just look at what your date calculation is returning): steve=# select '2002-12-06'::date + 1; ?column? ------------ 2002-12-07 steve=# select '2002-12-06'::date + 1::interval; ?column? ------------------------ 2002-12-06 00:00:01-08 steve=# select '2002-12-06'::date + '1 day'::interval; ?column? ------------------------ 2002-12-07 00:00:00-08 Cheers, Steve On Friday 06 December 2002 4:32 pm, Laurette Cisneros wrote: > 2002-12-06'::date + 1