Your suggestion seems more elegant. However, you missed the mathematical
meaning of "BETWEEN" in SQL: 
it is inclusive of both lower and upper bounds.

In the case raised by Patrice Olivier-Wilson, when an announcement expires
on announcements_expiredate, it should not show on that date, and
thereafter.

But using BETWEEN, it will show on announcements_expiredate, thus a logical
error.

-----Original Message-----
From: Hank [mailto:hes...@gmail.com] 
Sent: Friday, October 01, 2010 4:10 PM
To: Joerg Bruehe
Cc: mysql@lists.mysql.com
Subject: Re: Not to show until a certain date

On Fri, Oct 1, 2010 at 2:34 PM, Joerg Bruehe <joerg.bru...@oracle.com>
wrote:
> Hi!
>
>
> Hank wrote:
>> On Wed, Sep 29, 2010 at 8:33 AM, Patrice Olivier-Wilson
>> <b...@biz-comm.com> wrote:
>>> On 9/28/10 8:33 PM, Chris W wrote:
>>>
>>>> SELECT *
>>>> FROM announcements
>>>> WHERE announcements_expiredate > CURDATE()
>>>> AND announcements_postdate <= CURDATE()
>>>> ORDER BY announcements_expiredate ASC
>>
>> Or how about something like this:
>>
>> SELECT *
>> FROM announcements
>> WHERE  CURDATE() between announcements_postdate and
announcements_expiredate
>> ORDER BY announcements_expiredate ASC
>
> The syntax is correct, but I don't think this statement will be
> optimized as well as the other proposal:
> BETWEEN is intended for "column BETWEEN const1 AND const2",
> whereas your statement is "const BETWEEN column1 AND column2".
>

But that only really matters if there are indexes on the column1 and
column2 fields.

And for the optimizer, wouldn't it make sense to map BETWEEN into two
comparison statements "(column>const1 and column<=const2)"  or
"(const>column1 and const<=column2)" where both scenarios the
optimizer may be able to use indexes on the fields?  It's exactly the
same as the other proposal:

"CURDATE() > announcements_postdate and CURDATE()<=
announcements_expiredate" which still is using two different fields
for the comparisons... so wouldn't both scenarios end up in the exact
same place?

-Hank

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=li...@cs.albany.edu


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to