如何在日期之间搜索? MySQL的

时间:2015-03-16 14:02:02

标签: mysql sql date

我有这个问题:

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

如何用更好的方式编写查询?

2 个答案:

答案 0 :(得分:-1)

始终这样做:

where datefield >= YourStartDate
and datefield < TheDayAfterYourEndDate

Dateformat返回字符串,仅用于显示目的。

答案 1 :(得分:-2)

我认为你可以像这样编写查询:

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