Re: Question on CURDATE()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jordan,

Syntactically, there is no restriction on OR'ing or AND'ing conditions. You 
could very well do this:

Select somefield where otherfield = 1 and otherfield = 2;

Of course, otherfield would never be both 1 and 2, so this is a worthless 
select statement, however, my point is, there would be no syntax error. 

Same deal with this:
SELECT * FROM WEEKS WHERE BEGIN >= CURDATE() AND END <= CURDATE();

This means, give me everything that begins before today or today, and after 
today or today.  Which of course is silly, that can't happen. So you'll never 
get anything back. However, there's nothing syntactically wrong with the 
statement. 

Replacing it by 'OR' give you all results, so it's just as silly why even have 
the 'WHERE' condition in the first place? I think reclmaples needs to 
re-analyze what he's trying to accomplish, but again, there's nothing 
syntactically (stupid spellcheck) wrong with the statement. 

I'm going out on a limb here, but it seems what the point is to get everythign 
that's not today, in which case you'd just say that:

SELECT * FROM WEEKS WHERE BEGIN != CURDATE();

Or, if you only want today:
SELECT * FROM WEEKS WHERE BEGIN = CURDATE();

I hope that helps? not sure, I may as I said be missing the goal. 

-Micah 


On Tuesday 13 September 2005 9:14 pm, Jordan Miller wrote:
> Micah,
> Oh, my bad. I was trying to remember how I did something like this
> before, stringing together a lot of "WHERE"s. You're right, though,
> it wasn't "WHERE", it was "OR".
>
> Rich,
> I think you need "OR" instead of "AND", OR else I'm just totally out
> to lunch tonight:
> SELECT * FROM WEEKS WHERE BEGIN >= CURDATE() OR END <= CURDATE();
>
> The syntax error is that something cannot be >= AND <= the same thing
> at the same time!
>
> I have had this problem before in the past. You say to yourself,
> well, I need all of the records, so that intuitively makes you choose
> "AND" when in SQL it should technically be "OR"  (you want the
> records that are true for each of these operators separately, NOT at
> the same time, which for most records is impossible).
>
> Also, you may want to take away one of the "=" signs, or you may get
> something "=" to CURDATE() twice (not sure how SQL handles this).
>
> Maybe try (taking out one of the "="):
> SELECT * FROM WEEKS WHERE BEGIN >= CURDATE() OR END < CURDATE();
>
> Maybe it's just late over here. Has anyone else run into this same
> thing?
>
> Jordan
>
> On Sep 13, 2005, at 10:36 PM, Micah Stevens wrote:
> > You can't do that in SQL, that would give you a big fat syntax error.
> >
> > On Tuesday 13 September 2005 7:45 pm, Jordan Miller wrote:
> >> Rich,
> >>
> >> Did you try putting "WHERE" twice?
> >>
> >> try:
> >> SELECT * FROM WEEKS WHERE BEGIN >= CURDATE() and WHERE END <=
> >> CURDATE;
> >>
> >> Jordan
> >>
> >> On Sep 13, 2005, at 9:08 PM, reclmaples wrote:
> >>> I am trying to write a statement that will basically do this:
> >>>
> >>> SELECT * FROM WEEKS WHERE BEGIN >= CURDATE() and END <= CURDATE;
> >>>
> >>> But for some reason I can only use one CURDATE() reference in my sql
> >>> statement, does anyone know why?  Is there a way I can get around
> >>> this?
> >>>
> >>>
> >>> Any help would be greatly appreciated.
> >>>
> >>> Thanks
> >>> -Rich
> >>>
> >>> --
> >>> PHP Database Mailing List (http://www.php.net/)
> >>> To unsubscribe, visit: http://www.php.net/unsub.php
> >
> > --
> > PHP Database Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux