MYSQL上个月查询未返回前9天

时间:2017-02-02 05:55:22

标签: php mysql

我正在查询上个月的记录。因为它是2月份,它应该返回今年1月添加的所有记录。

我的查询:

    `SELECT * FROM table_name WHERE date >= 
DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 
DAY) AND date <= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 
MONTH)), INTERVAL 0 DAY) AND campaign = '$campaign' ORDER BY date 
ASC`

它会返回一些记录但跳过前9天。它开始显示上个月10日的记录。我在这里缺少什么?

4 个答案:

答案 0 :(得分:1)

检查您的日期字段类型,并确保您没有将其与varchar错误。

答案 1 :(得分:0)

SELECT * FROM table_name WHERE date between DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 MONTH) AND DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 DAY) AND campaign = '$campaign' ORDER BY date ASC

答案 2 :(得分:0)

尝试逐步获取数据,

首先,您应该尝试以下查询。

SELECT Date, DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) AS StartDate, DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), INTERVAL 0 DAY)  AS EndDate FROM MyTable

其次,如果第一步给出正确的日期,那么直接在where子句中写入日期而不是DATE_ADD函数来获取数据。

第三,如果这些将给你写DATA然后尝试使用DATE_ADD函数获取数据。

重播如果你能得到解决方案。

答案 3 :(得分:0)

SELECT * FROM table_name WHERE (月(日期)=(月(现在()) - 1)和年(日)=年(现在())) 要么 (月(日)= 12和月(现在())= 1和年(日期)=(年(现在()) - 1)AND campaign ='$ campaign'ORDER BY date ASC`