Well, i tried all your sugestions, and i found some funny issues, i use the
query to count exactly in a day by day basis, and running the query with

WHERE lastlogin >= '2009-05-01' AND lastlogin < '2009-05-03'

OR

WHERE lastlogin >= 'X' AND lastlogin <= 'Y' + '1 day'::interval


it includes the 0 hours of day 3:

05-02-2009 12:00:00 AM

The exact result are from running:

....between '2009-05-01 00:00'::timestamp
       and '2009-05-02 23:59:59'::timestamp

but i select the ranges from a web form using a textbox, and right now i
dont have a java calendar at hand, i tried this with good result:

WHERE lastlogin::date BETWEEN  '2009-05-01' AND '2009-05-02'

But now the query uses seq scan and not the index in lastlogin column.

Is there another way?


On Wed, May 6, 2009 at 3:17 PM, Erik Jones <ejo...@engineyard.com> wrote:

>
> On May 6, 2009, at 2:12 PM, Miguel Miranda wrote:
>
>  Hi, what is the recommended way to select a range of dates?
>>
>> Lets say a have a table with a lastlogin (timestamp) column and i want
>> toknow what users logged in for last time between 2009-05-01 and 2009-05-02?
>>
>> I know that a simple
>>
>> where lastlogin between '2009-05-01' and '2009-05-02' doesnt work beacuse
>> it doesnt include who logged in 2009-05-02 15:30:00, etc...
>>
>
>
> WHERE lastlogin >= '2009-05-01' AND lastlogin < '2009-05-03'
>
> or, if the values have are some unknown X and Y dates then you can do this:
>
> WHERE lastlogin >= 'X' AND lastlogin <= 'Y' + '1 day'::interval
>
> Erik Jones, Database Administrator
> Engine Yard
> Support, Scalability, Reliability
> 866.518.9273 x 260
> Location: US/Pacific
> IRC: mage2k
>
>
>
>
>
>

Reply via email to