我正在查询上个月的记录。因为它是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日的记录。我在这里缺少什么?
答案 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`