Обсуждение: Querying date interval
Hi,
Is there any SQL workaround to get the right results from the select
statement bellow? Or am I doing something wrong??
create table testdate (field1 date);
insert into testdate values ('2000-09-30');
insert into testdate values ('2000-10-20');
insert into testdate values ('2000-11-25');
select * from testdate where field1 between '2000-10-01' and
'2000-11-30' ;
field1
------------2000-09-30 <---- why is it here??2000-10-202000-11-25
(3 rows)
Thanks in advance!
--
Renato
Sao Paulo - SP - Brasil
rdg@viafractal.com.br
On Mon, Jan 15, 2001 at 12:19:56 -0200, Renato De Giovanni wrote: > select * from testdate where field1 between '2000-10-01' and > '2000-11-30' ; > > field1 > ------------ > 2000-09-30 <---- why is it here?? > 2000-10-20 > 2000-11-25 It works fine for me (7.0.3, Debian GNU/Linux "unstable"). I suspect your problem has to do with the "DATESTYLE" setting you're using; does it help if you do "SET DATESTYLE TO 'ISO'" prior to INSERTing your test values? HTH, Ray -- [Open Source] is the finest expression of the free market. Ideas are encouraged to proliferate and the best thinking wins. By contrast, most corporations today operate in a central planning straitjacket. http://www.thestandard.com/article/display/0,1151,15772,00.html
Renato De Giovanni <rdg@viafractal.com.br> writes:
> create table testdate (field1 date);
> insert into testdate values ('2000-09-30');
> insert into testdate values ('2000-10-20');
> insert into testdate values ('2000-11-25');
> select * from testdate where field1 between '2000-10-01' and
> '2000-11-30' ;
> field1
> ------------
> 2000-09-30 <---- why is it here??
> 2000-10-20
> 2000-11-25
> (3 rows)
Curious. I can't reproduce this error in EST5EDT timezone, using
either 7.0.2 or current.
What PG version are you using, and with what timezone setting?
Is 2000-09-30 or 2000-10-01 a daylight-savings transition date in your
timezone?
regards, tom lane
----- Original Message ----- From: "Renato De Giovanni" <rdg@viafractal.com.br> > Hi, > > Is there any SQL workaround to get the right results from the select > statement bellow? Or am I doing something wrong?? > > select * from testdate where field1 between '2000-10-01' and > '2000-11-30' ; > > field1 > ------------ > 2000-09-30 <---- why is it here?? > 2000-10-20 > 2000-11-25 > (3 rows) > Someone else mentioned DATESTYLE - the other thing to check is that you haven't got a local summertime adjustment on 30th Sep or 1st Oct - that caused issues in some previous versions of postgres IIRC (have a rummage in the archives) - Richard Huxton
> > create table testdate (field1 date);
> > insert into testdate values ('2000-09-30');
> > insert into testdate values ('2000-10-20');
> > insert into testdate values ('2000-11-25');
> > select * from testdate where field1 between '2000-10-01' and
> > '2000-11-30' ;
>
> > field1
> > ------------
> > 2000-09-30 <---- why is it here??
> > 2000-10-20
> > 2000-11-25
> > (3 rows)
>
> Curious. I can't reproduce this error in EST5EDT timezone, using
> either 7.0.2 or current.
>
> What PG version are you using, and with what timezone setting?
> Is 2000-09-30 or 2000-10-01 a daylight-savings transition date in your
> timezone?
I'm using 7.0.2 version on debian 2.2. Standard timezone here is GMT-3,
but we´re currently in DST since 8 Oct 2000.
Never changed datestyle setting - I'm only using ISO8601 notation to
manipulate values.
And now I've noticed something even weird - leaving psql interface and
entering it again, that query show me the right result! But if I drop the
table, create the same structure with the same data then I get wrong
result again!?
Well, anyway, I'll try upgrading to 7.0.3...
--
Renato
Sao Paulo - SP - Brasil
rdg@viafractal.com.br
> > select * from testdate where field1 between '2000-10-01' and > > '2000-11-30' ; > > > > field1 > > ------------ > > 2000-09-30 <---- why is it here?? > > 2000-10-20 > > 2000-11-25 > > It works fine for me (7.0.3, Debian GNU/Linux "unstable"). > > I suspect your problem has to do with the "DATESTYLE" setting you're using; > does it help if you do "SET DATESTYLE TO 'ISO'" prior to INSERTing your test > values? Just reporting, I´ve tried: \set DATESTYLE ´ISO´ before adding values, but the result is still wrong. Thanks anyway, -- Renato Sao Paulo - SP - Brasil rdg@viafractal.com.br