在mysql中获取从过去一年到上个月最后一天的记录
我正在尝试获取过去一年以及提供月份最后一天的记录,即不包括当前月份。我的问题是:在mysql中获取从过去一年到上个月最后一天的记录,mysql,sql,Mysql,Sql,我正在尝试获取过去一年以及提供月份最后一天的记录,即不包括当前月份。我的问题是: SELECT `customer_id`, `customer_name`, `customer_date` FROM `customers` WHERE DATE(`customer_date`) <= (CURDATE() - INTERVAL 1 MONTH) AND DATE(customer_date) >= (CURDATE() - INTERVAL 12 MONTH)
SELECT `customer_id`, `customer_name`, `customer_date`
FROM `customers`
WHERE DATE(`customer_date`) <= (CURDATE() - INTERVAL 1 MONTH)
AND DATE(customer_date) >= (CURDATE() - INTERVAL 12 MONTH)
选择“客户id”、“客户名称”、“客户日期”
来自“客户”
其中日期(`customer\u DATE`)=(CURDATE()-间隔12个月)
此查询获取2018年5月1日至2019年4月8日的记录
间隔1个月30天前获取记录。我需要在这里做些什么
我想排除当月记录,因此查询应返回2019年4月30日之前的记录。我们如何做到这一点?您必须使用帮助功能正确计算范围的第一天和最后一天。例如: 计算范围的第一天
SELECT LAST_DAY(CURDATE() - INTERVAL 13 MONTH) + INTERVAL 1 DAY
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
输出:
2018-05-01
计算范围的最后一天
SELECT LAST_DAY(CURDATE() - INTERVAL 13 MONTH) + INTERVAL 1 DAY
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
输出:
2019-04-30
完整查询可能如下所示:
SELECT `customer_id`, `customer_name`, `customer_date`
FROM `customers`
WHERE `customer_date` >= LAST_DAY(CURDATE() - INTERVAL 13 MONTH) + INTERVAL 1 DAY
AND `customer_date` <= SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH)
选择“客户id”、“客户名称”、“客户日期”
来自“客户”
其中,`customer\u date`>=最后一天(CURDATE()-间隔13个月)+间隔1天
和'customer\u date'从'customers'中选择'customer\u id','customer\u name','customer\u date'
月份(`customer\u date`)=(CURDATE()-间隔12个月)
希望这有助于获取上个月的数据:
where customer_date < curdate() + interval (1 - day(curdate()) day
@草莓你什么意思?我就是这个意思。这正是我想要的。谢谢,这似乎有点复杂。Maxim解决方案易于理解并满足我的要求。无论如何,谢谢你。