MySQL获取上月第一天和最后一天
1. 简介
在使用MySQL进行数据查询和统计时,经常需要获取上个月的数据。为了方便查询,可以通过MySQL的函数来获取上个月的第一天和最后一天。本文将详细介绍如何在MySQL中获取上个月的第一天和最后一天。
2. 方法一:使用函数LAST_DAY和DATE_SUB
MySQL提供了函数LAST_DAY()
用于获取指定日期所在月份的最后一天。通过结合函数DATE_SUB()
,可以计算出上个月的最后一天。具体步骤如下:
SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS last_month_last_day;
运行以上代码,将返回上个月的最后一天的日期。例如,如果今天是2022年3月15日,那么上个月的最后一天应该是2022年2月28日。
同样地,可以使用函数DATE_SUB()
来计算上个月的第一天:
SELECT DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), INTERVAL DAY(CURDATE())-1 DAY) AS last_month_first_day;
运行以上代码,将返回上个月的第一天的日期。以2022年3月15日为例,上个月的第一天是2022年2月1日。
3. 方法二:使用函数DATE_FORMAT和DATE_SUB
除了方法一中使用的函数外,MySQL还提供了函数DATE_FORMAT()
用于格式化日期。结合函数DATE_SUB()
,可以获取上个月的第一天和最后一天。具体步骤如下:
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AS last_month_first_day;
运行以上代码,将返回上个月的第一天的日期。例如,如果今天是2022年3月15日,则上个月的第一天是2022年2月1日。
同样地,可以使用函数DATE_FORMAT()
来获取上个月的最后一天:
SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS last_month_last_day;
运行以上代码,将返回上个月的最后一天的日期。以2022年3月15日为例,上个月的最后一天是2022年2月28日。
4. 示例
下面通过一个示例来演示如何使用以上两种方法获取上个月的第一天和最后一天。
首先,创建一个名为”sales”的表,并插入几条测试数据:
CREATE TABLE sales (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
sale_date DATE,
amount DECIMAL(10, 2)
);
INSERT INTO sales (name, sale_date, amount) VALUES
('John', '2022-02-15', 100.50),
('Alice', '2022-02-28', 200.20),
('Bob', '2022-03-05', 150.75),
('Tom', '2022-03-10', 300.80);
接下来,使用方法一获取上个月的第一天和最后一天:
-- 获取上个月的第一天
SELECT DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), INTERVAL DAY(CURDATE())-1 DAY) AS last_month_first_day;
-- 获取上个月的最后一天
SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS last_month_last_day;
运行以上代码,将返回上个月的第一天和最后一天的日期。
接下来,使用方法二获取上个月的第一天和最后一天:
-- 获取上个月的第一天
SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AS last_month_first_day;
-- 获取上个月的最后一天
SELECT LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) AS last_month_last_day;
同样地,运行以上代码,将返回上个月的第一天和最后一天的日期。
5. 总结
本文介绍了两种在MySQL中获取上个月第一天和最后一天的方法。方法一使用了函数LAST_DAY()
和DATE_SUB()
,方法二使用了函数DATE_FORMAT()
和DATE_SUB()
。通过使用这些方法,可以方便地查询和统计上个月的数据。