MySQL 如何在MySQL中获取上个月的第一天?

MySQL 如何在MySQL中获取上个月的第一天?

在实际业务中,我们常常需要查询上个月的数据。而常见的一个需求是查询上个月的第一天,以此作为数据筛选的条件。

下面来介绍在MySQL中如何获取上个月的第一天。

阅读更多:MySQL 教程

方法一

最直接的方法是使用MySQL内置函数DATE_FORMATDATE_SUB来计算上个月的第一天,具体的查询语句如下:

SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01')

上面的查询语句中,DATE_SUB(CURDATE(), INTERVAL 1 MONTH)表示取当前日期往前推一个月的时间,而'%Y-%m-01'则表示将计算结果以年-月-01的格式输出,也就是上个月的第一天。

具体的演示效果如下所示:

mysql> SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01');
+---------------------------------------------------------+
| DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') |
+---------------------------------------------------------+
| 2022-01-01                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)

方法二

除了上面的方法,我们还可以使用LAST_DAY函数来获取上个月的最后一天,然后再使用DATE_SUB函数来计算出上个月的第一天,具体的查询语句如下:

SELECT DATE_SUB(DATE_FORMAT(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH)), '%Y-%m-%d'), INTERVAL DAY(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH))) - 1 DAY)

上面的查询语句中,DATE_SUB(CURDATE(), INTERVAL 2 MONTH)表示取当前日期往前推两个月的时间,然后使用LAST_DAY函数获取该月的最后一天,最后把获取到的日期再次使用DATE_SUB函数减去该月的天数再加上1,就可以得到上个月的第一天了。这个方法可能有些复杂,不过也非常的实用。

具体的演示效果如下所示:

mysql> SELECT DATE_SUB(DATE_FORMAT(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH)), '%Y-%m-%d'), INTERVAL DAY(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH))) - 1 DAY);
+-------------------------------------------------------------------+
| DATE_SUB(DATE_FORMAT(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH)), '%Y-%m-%d'), INTERVAL DAY(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH))) - 1 DAY) |
+-------------------------------------------------------------------+
| 2022-01-01                                                        |
+-------------------------------------------------------------------+
1 row in set (0.01 sec)

结论

至此,我们已经介绍了在MySQL中如何获取上个月的第一天的两种方法。其中,第一种方法比较简单而且实用,推荐大家使用。不管是哪种方法,只要理解了原理,就可以轻松地应对类似的查询需求了。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程