Вопрос по составлению запроса (like или ф-ии для р-ты с датой?)

iSlayter

Новичок
Вопрос по составлению запроса (like или ф-ии для р-ты с датой?)

Есть такой запрос:
[sql]SELECT `id` FROM `journals` WHERE `date` LIKE "2007-08-16 %" OR `date` LIKE "2007-08-11 %" OR `date` LIKE "2007-08-12 %"[/sql]
`date` поле datetime типа.
Для начала спрошу так ли лучше запускать этот запрос или в where лучше записать DAYOFMONTH(`date`), YEAR(`date`), MONTH(`date`)?

Проблема, кстати, сама в том заключается, что mysql возвращает лишь одну запись, которая попадает под последний LIKE(данные попадающие под первые два LIKE в базе есть)?

-~{}~ 17.08.07 00:53:

[sql]SELECT `id`
FROM `journals`
WHERE (
DAYOFMONTH( `date` ) =17
AND MONTH( `date` ) =8
AND YEAR( `date` ) =2007
)
OR (
DAYOFMONTH( `date` ) =12
AND MONTH( `date` ) =8
AND YEAR( `date` ) =2007
)
OR (
DAYOFMONTH( `date` ) =11
AND MONTH( `date` ) =8
AND YEAR( `date` ) =2007
)
LIMIT 0 , 30[/sql]
Можно закрывать, в принципе, но всё же было бы классно получить ответ на вопрос почему если в запросе сделать 3 раза `field` LIKE по полю `field` будет проверен лишь последний LIKE?
 

kruglov

Новичок
вообще, должны все составные части OR выполняться, даже если там like
 

iSlayter

Новичок
[sql](DATE_FORMAT(`date`,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') as `today`)[/sql]
или
[sql](DATE_FORMAT(`date`,'%Y-%m-%d') = CURDATE() as `today`)[/sql]
 

iSlayter

Новичок
BRat, угу, помню ведь что была такая ф-я, но блин думал что она пишется как DATE_DIFF() :)
Или
[sql]
(DATEDIFF(NOW(),`date`) = 0)
[/sql]

Можно и ещё Н вариантов придумать. Но, по-моему, тема несколько исчерпана, правда? :)

P.S.
Спасибо всем за участие! :)

-~{}~ 17.08.07 15:45:

да, а ещё можно так!
[sql](
CONCAT(DATE_FORMAT(`date`,'%Y-'),DATE_FORMAT(`date`,'%m-'),DATE_FORMAT(`date`,'%d')) = DATE_FORMAT(NOW(), '%Y-%m-%d')
)[/sql]

P.P.S. вроде ни одной ссылки не проигнорировал, ага? :rolleyes:
 
Сверху