Re: Select gives the wrong results

From: "Reid Thompson" <Reid(dot)Thompson(at)ateb(dot)com>
To: <pgsql-general(at)postgresql(dot)org>
Subject: Re: Select gives the wrong results
Date: 2005-08-30 12:49:40
Message-ID: F71C0DC6B4FD3648815AAA7F969E35290194EB53@sr002-2kexc.ateb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


> Crystle Numan wrote:
>> Dear all:
>>
>> I am fairly knowledgeable about PostgreSQL but this behaviour is
>> stumping me. Any help would be wonderful. If you think it is a bug,
>> let me now and I'll file one.
>>
>> (select values in DB (date stamps) between Jan 1, 2000 and Jan 1,
>> 2005, no results)
>>
>> db_name=# SELECT * from person_detail WHERE field='2' AND
>> value>'946702800' AND value<'1104555600';
>> id | person | field | value
>> ----+--------+-------+-------
>> (0 rows)
>>
>> (select values in DB (date stamps) between Jan 1, 2003 and Jan 1,
>> 2005, 4 results (!))
>>
>> db_name=# SELECT * from person_detail WHERE field='2' AND
>> value>'1041397200' AND value<'1104555600';
>> id | person | field | value
>> ------+--------+-------+------------
>> 1187 | 454 | 2 | 1051156800
>> 1188 | 460 | 2 | 1053316800
>> 1219 | 472 | 2 | 1057723200
>> 1181 | 441 | 2 | 1042520400
>> (4 rows)
>>
>> The first select should have those 4 results plus any more. We tried
>> putting quotes (") around the word 'value' to see if that made a
>> difference, and no it didn't. We tried reversing the two clauses and
>> that made no difference.
>>
>> Here's another funny one. Not the one that doesn't belong.
>>
>> db_name=# SELECT * from person_detail WHERE field='2' AND
>> value>='1000000001' AND value<='1104555600';
>> id | person | field | value
>> ------+--------+-------+------------
>> 3 | 218 | 2 | 1017464400
>> 253 | 295 | 2 | 1002340800
>> 514 | 323 | 2 | 100155600
>> 1126 | 405 | 2 | 1006750800
>> 1179 | 439 | 2 | 1035172800
>> 1187 | 454 | 2 | 1051156800
>> 1188 | 460 | 2 | 1053316800
>> 1219 | 472 | 2 | 1057723200
>> 1181 | 441 | 2 | 1042520400
>> 1152 | 434 | 2 | 1032321600
>> 1129 | 410 | 2 | 1024027200
>> (11 rows)
>>
>> Anyone see what's going on here?
>>
>> Thanks!
>> Crystle
>>
>>
>>
> http://archives.postgresql.org

Assuming that value is epoch date,

$ psql test -c "select date(1051156800)"
date
------------
2003-04-24
(1 row)

$ psql test -c "select date(1053316800)"
date
------------
2003-05-19
(1 row)

$ psql test -c "select date(0)"
date
------------
1969-12-31
(1 row)

$ psql test -c "select date(86400)"
date
------------
1970-01-01
(1 row)

Then wouldn't something along the lines of:
SELECT * from person_detail WHERE field='2' AND value between
date(1000000001) and date(1104555600); work....

reid

Browse pgsql-general by date

  From Date Subject
Next Message Michael Fuhr 2005-08-30 12:53:41 Re: update functions locking tables
Previous Message Bruno Wolff III 2005-08-30 12:47:25 Re: Planner create a slow plan without an available index