Обсуждение: BUG #4317: problem with comparision of datatype date

Поиск
Список
Период
Сортировка

BUG #4317: problem with comparision of datatype date

От
"Sanjay Rajdev"
Дата:
The following bug has been logged online:

Bug reference:      4317
Logged by:          Sanjay Rajdev
Email address:      sanjay.rajdev@featherstoneinformatics.com
PostgreSQL version: 8.3.1
Operating system:   Window Server 2003
Description:        problem with comparision of datatype date
Details:

I installed a new PostgreSQL server 8.3.1 few days back, and then restored a
backup taken from our old server which had older version of PostgreSQL
Server.

We have a application that uses this database, and at most of the place we
have used = sign for date comparision.

Here is what is happening, I have a datatype "date" column in my database
called "somedate" there are 277 rows in the database which have "somedate" =
"2008-07-18".

When I execute the below query
"select * from myTable where somedate = '2008-07-18'"
I only get 145 rows back from the database.

If I execute
"select * from myTable where somedate = cast('2008-07-18' as Date)"
Still I get 145 rows

If I execute
"select * from myTable where somedate between '2008-07-18' and
'2008-07-18'"
I get all 277 rows.

I don't know what is wrong in the first and second queries. Can someone
please help?
we have used similar queries at most of place in our application.

Re: BUG #4317: problem with comparision of datatype date

От
Craig Ringer
Дата:
Sanjay Rajdev wrote:

> If I execute
> "select * from myTable where somedate between '2008-07-18' and
> '2008-07-18'"
> I get all 277 rows.

I'm not able to help you out directly (just another user) but answering
the following questions might help others:

- What was the previous database version?
- Can you provide DDL for the table?
- What is the exact data type of the field `somedate' ?

--
Craig Ringer

Re: BUG #4317: problem with comparision of datatype date

От
Tom Lane
Дата:
"Sanjay Rajdev" <sanjay.rajdev@featherstoneinformatics.com> writes:
> Here is what is happening, I have a datatype "date" column in my database
> called "somedate" there are 277 rows in the database which have "somedate" =
> "2008-07-18".

> When I execute the below query
> "select * from myTable where somedate = '2008-07-18'"
> I only get 145 rows back from the database.

Is there an index on somedate, and if so does reindexing it help?

            regards, tom lane

Re: BUG #4317: problem with comparision of datatype date

От
Sanjay Rajdev
Дата:
- What was the previous database version?
8.1

- Can you provide DDL for the table?
No, company policies does not allow that.

- What is the exact data type of the field `somedate' ?
datatype is "date"



Regards,
Sanjay Rajdev

----- Original Message -----
From: "Craig Ringer" <craig@postnewspapers.com.au>
To: "Sanjay Rajdev" <sanjay.rajdev@featherstoneinformatics.com>
Cc: pgsql-bugs@postgresql.org
Sent: Friday, July 18, 2008 10:08:39 PM GMT +05:30 Chennai, Kolkata, Mumbai, New Delhi
Subject: Re: [BUGS] BUG #4317: problem with comparision of datatype date

Sanjay Rajdev wrote:

> If I execute
> "select * from myTable where somedate between '2008-07-18' and
> '2008-07-18'"
> I get all 277 rows.

I'm not able to help you out directly (just another user) but answering
the following questions might help others:

- What was the previous database version?
- Can you provide DDL for the table?
- What is the exact data type of the field `somedate' ?

--
Craig Ringer

Re: BUG #4317: problem with comparision of datatype date

От
Sanjay Rajdev
Дата:
Tom,

Thanks for the thought, I think that this can be the problem, as earlier there was no indexing on the column, but 2
daysback we added index on 5 of columns in the table and "somedate" is one of them. This problem have been noticed
afterthe index's were added.  
I can't test this out as this happens while people are using the software, and when someone complains, we have to fix
itimmediately we can't have people wait for the re-indexing to be done.  

For fixing it we just update the date to some other date and then update it back to what was originally, this way it
works.Any suggestion to get it fixed.  



Regards,
Sanjay Rajdev


----- Original Message -----
From: "Tom Lane" <tgl@sss.pgh.pa.us>
To: "Sanjay Rajdev" <sanjay.rajdev@featherstoneinformatics.com>
Cc: pgsql-bugs@postgresql.org
Sent: Friday, July 18, 2008 10:17:03 PM GMT +05:30 Chennai, Kolkata, Mumbai, New Delhi
Subject: Re: [BUGS] BUG #4317: problem with comparision of datatype date

"Sanjay Rajdev" <sanjay.rajdev@featherstoneinformatics.com> writes:
> Here is what is happening, I have a datatype "date" column in my database
> called "somedate" there are 277 rows in the database which have "somedate" =
> "2008-07-18".

> When I execute the below query
> "select * from myTable where somedate = '2008-07-18'"
> I only get 145 rows back from the database.

Is there an index on somedate, and if so does reindexing it help?

regards, tom lane

Re: BUG #4317: problem with comparision of datatype date

От
"Kevin Grittner"
Дата:
>>> On Fri, Jul 18, 2008 at  2:35 PM, in message
<4744486.108381216409720544.JavaMail.root@mail.featherstoneinformatics.com>,
Sanjay Rajdev <sanjay.rajdev@featherstoneinformatics.com> wrote:

> Thanks for the thought, I think that this can be the problem, as
earlier
> there was no indexing on the column, but 2 days back we added index
on 5 of
> columns in the table and "somedate" is one of them. This problem have
been
> noticed after the index's were added.
> I can't test this out as this happens while people are using the
software,

Try adding another index on the column (with a different index name)
using CREATE INDEX CONCURRENTLY.  Then drop the old index.

-Kevin