简体   繁体   English

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

[英]MYSQL Last month Query is not returning first 9 days

I am querying records from the last calendar month. 我正在查询上一个日历月的记录。 As it is February, it should return all the records that were added on January this year. 由于是2月,因此它应返回今年1月添加的所有记录。

My Query: 我的查询:

    `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`

It returns some records but skips the first 9 days. 它返回一些记录,但跳过前9天。 It starts showing records from 10th of the previous month. 它开始显示上个月10日开始的记录。 What am I missing here? 我在这里想念什么?

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

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

Try To Get Data in step by step like, 尝试逐步获取数据,例如,

First, you should try below query. 首先,您应该尝试下面的查询。

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

Second, If First Step give right date then get your data by directly writing your date rather than DATE_ADD function in where clause. 其次,如果“第一步”给出正确的日期,则可以通过直接写日期而不是where子句中的DATE_ADD函数来获取数据。

Third, If These will Give you write DATA then try to fetch data using DATE_ADD function. 第三,如果这些将给您写入数据,则尝试使用DATE_ADD函数获取数据。

Replay If you will get solution. 重播如果您将获得解决方案。

SELECT * FROM table_name其中(MONTH(date)=(MONTH(NOW())-1)AND YEAR(date)= YEAR(NOW()))或(MONTH(date)= 12 AND MONTH(NOW())= 1 AND YEAR(date)=(YEAR(NOW())-1)AND campaign ='$ campaign'ORDER BY date ASC`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM