mySQL-上个月的全部时间

mySQL-上个月的全部时间,mysql,sql,date,between,Mysql,Sql,Date,Between,我试图使用以下语句检查上个月发生的所有记录 Select * from statistics where statistics_date BETWEEN date_format(NOW() - INTERVAL 1 MONTH, '%Y-%m-01') AND last_day(NOW() - INTERVAL 1 MONTH ) 但是,所选内容不包括最后一天。我想要的是从一个月的第一秒到最后一秒。其中month(statistics_date)=month(NOW())-1=日

我试图使用以下语句检查上个月发生的所有记录

Select  *  from statistics 
where statistics_date  
BETWEEN date_format(NOW() - INTERVAL 1 MONTH, '%Y-%m-01') 
AND last_day(NOW() - INTERVAL 1 MONTH ) 

但是,所选内容不包括最后一天。我想要的是从一个月的第一秒到最后一秒。

其中month(statistics_date)=month(NOW())-1
对于日期和时间戳的工作来说是出了名的糟糕,因为它的结束日期是错误的

以下是您需要的:

首先,让我们计算本月的第一天。你说得对极了

 DATE_FORMAT(NOW(),'%Y-%m-01')
接下来,让我们计算上个月的第一天:

 DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 1 MONTH
现在,我们选择间隔中的记录

Select * 
  from statistics 
 where statistics_date   >=   DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 1 MONTH
   and statistics_date   <    DATE_FORMAT(NOW(),'%Y-%m-01')
选择*
根据统计数字
其中statistics\u date>=日期格式(NOW(),“%Y-%m-01”)-间隔1个月
和统计数据\u日期<日期\u格式(现在(),“%Y-%m-01”)

您是否看到如何使用
>=
选择日期范围的开头,以及使用
选择日期范围的结尾?这只考虑同一个月,而不是同一年。这在二月有效,但在一月无效。它也会在多年数据集上出错。因此,投票被否决。