2015-03-16 3 views
0

У меня есть этот запрос:Как искать между датами? MySQL

SELECT * FROM tabl1 

WHERE 
(
    created_time BETWEEN 
         DATE_FORMAT(NOW() ,'%Y-%m-02') 
         AND 
         DATE_FORMAT(NOW() ,'%Y-%m-02')+INTERVAL 1 MONTH 

    AND 

    DAY(NOW()) > 1 
) 
OR 
(
    created_time BETWEEN 
         DATE_FORMAT(NOW() ,'%Y-%m-02') 
         AND 
         DATE_FORMAT(NOW() ,'%Y-%m-02')-INTERVAL 1 MONTH  
    AND 
    DAY(NOW()) = 1 
) 

этот запрос будет возвращать столбцы, созданные в прошлом месяце, но начало месяц в день № 2 и в конце на второй день следующего месяца!

так он будет возвращать:

3.3.2015 
2.3.2015 

но он не возвращает

1.3.2015 

Как написать запрос с лучшим способом?

+1

Я вижу, что вы конкретно написано DATE_FORMAT (NOW(), '% Y-% м-02'), попробуйте заменить 02 с 01 и проверьте. – Chetan

ответ

-1

Всегда делайте это:

where datefield >= YourStartDate 
and datefield < TheDayAfterYourEndDate 

DateFormat возвращает строки и используется только для отображения.

-2

Я думаю, что вы можете написать запрос так:

SELECT * 
FROM tabl1 
WHERE DATE >= '2015-02-02 00:00' AND DATE_2 <= '20015-03-02 23:59' 
+0

Я не понял «-1», суть такова, но вам нужно ее улучшить –

Смежные вопросы