use*_*763 2 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 )
Run Code Online (Sandbox Code Playgroud)
但是,选择不包括最后一天.我想要的是从本月的第一个月到本月的最后一个月.
BETWEEN
众所周知,日期和时间戳工作不好,因为它的结束日期是错误的.
这就是你需要的:
首先,让我们计算当月的第一天.你有完全正确的.
DATE_FORMAT(NOW(),'%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)
接下来,让我们计算上个月的第一天:
DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 1 MONTH
Run Code Online (Sandbox Code Playgroud)
现在,我们选择区间内的记录.
Select *
from statistics
where statistics_date >= DATE_FORMAT(NOW(),'%Y-%m-01') - INTERVAL 1 MONTH
and statistics_date < DATE_FORMAT(NOW(),'%Y-%m-01')
Run Code Online (Sandbox Code Playgroud)
你看到日期范围的开头是如何选择>=
和结束的<
?您是否看到我如何使用当月的第一天作为日期范围的结束?这些事情很重要,因为时间戳可能有几天和几天.考虑时间戳'2013-01-31 23:58'.它恰好是在 '2012-01-31'之后,所以之间不会发现它.