MySQL 取当前月份的上一月份

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【5月更文挑战第2天】

MySQL 取当前月份的上一月份

在MySQL中,可以使用日期函数和操作符来计算当前月份的上一月份。下面是一种常见的方法:

SELECT 
    DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m') AS previous_month;

解释如下:

  1. NOW() 函数返回当前日期和时间。DATE_SUB() 函数可以用于从日期中减去指定的时间间隔,这里我们将其用于减去 1 个月。
  2. DATE_FORMAT() 函数用于格式化日期。我们使用 '%Y-%m' 格式,表示年份和月份。
  3. AS previous_month 是给查询结果起一个别名,便于读取。 此查询将返回一个带有上一月份的结果,格式为 YYYY-MM。 你也可以将查询结果用作子查询,将其嵌套到其他查询中使用。 例如,我们可以从一个 orders 表中获取上一月份的订单数量:
SELECT COUNT(*)
FROM orders
WHERE DATE_FORMAT(order_date, '%Y-%m') = 
      (SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m'));

这样,我们就可以获取到上一个月份的订单数量了。 希望对你有帮助!

一个名为 orders 的表,其中包含订单信息,包括订单号、订单日期等字段。现在我们要获取上一个月份的订单数量。我们可以使用以下示例代码:

-- 创建 orders 表
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE
);
-- 插入示例数据
INSERT INTO orders (order_id, order_date)
VALUES (1, '2022-03-15'), (2, '2022-03-18'), (3, '2022-04-05'), (4, '2022-04-10');
-- 查询上一个月份的订单数量
SELECT COUNT(*)
FROM orders
WHERE DATE_FORMAT(order_date, '%Y-%m') = 
      (SELECT DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m'));

执行以上代码后,我们将获得上一个月份的订单数量。这里假设当前日期是 2022 年 04 月 18 日,则上一个月份为 2022 年 03 月,我们插入了两个订单记录在这个月份。 查询结果示例:

+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+

这表示上一个月份(2022 年 03 月)共有 2 条订单记录。 你可以根据实际的应用场景和具体的表结构,修改示例代码中的表名、字段名和示例数据,以适应自己的需求。

DATE_FORMAT函数是MySQL中的一个日期格式化函数,用于将日期值按照指定的格式进行格式化输出。其语法如下:

DATE_FORMAT(date, format)

其中:

  • date 是要格式化的日期值。
  • format 是日期格式字符串,用于指定如何格式化日期。常用的格式包括:
  • %Y:四位年份(例如:2022)
  • %y:两位年份(例如:22)
  • %m:月份(01-12)
  • %M:月份全名(例如:January)
  • %d:日期(01-31)
  • %H:24小时制的小时(00-23)
  • %h:12小时制的小时(01-12)
  • %i:分钟(00-59)
  • %s:秒(00-59)
  • %p:上午/下午(AM/PM)
  • %W:星期全名(例如:Monday)
  • %w:星期数字(0-6,其中0表示星期日)
  • 等等 下面是一些示例,展示了如何使用DATE_FORMAT函数来格式化日期值:
SELECT
    DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;
-- 输出结果示例:2022-04-18
SELECT
    DATE_FORMAT(NOW(), '%Y年%m月%d日') AS formatted_date;
-- 输出结果示例:2022年04月18日
SELECT
    DATE_FORMAT('2022-04-18', '%W, %M %e, %Y') AS formatted_date;
-- 输出结果示例:Monday, April 18, 2022

在示例中,第一个查询将当前日期格式化为YYYY-MM-DD的形式,第二个查询将当前日期格式化为YYYY年MM月DD日的形式,第三个查询将指定的日期字符串格式化为Weekday, Month Day, Year的形式。你可以根据需要自由组合不同的格式选项,来得到你想要的日期格式化结果。 ,DATE_FORMAT函数将日期格式化为字符串类型的结果,所以可以在SELECT语句中使用它作为结果列,也可以在WHERE条件中使用它进行日期的比较或筛选。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
关系型数据库 MySQL
mysql日期加一天函数
mysql日期加一天函数
41 0
|
关系型数据库 MySQL 数据库
801.【技术】21天小打卡--mysql-第一天
801.【技术】21天小打卡--mysql-第一天
Zp
|
关系型数据库 MySQL
Mysql 日期查询
Mysql 日期查询
Zp
86 0
|
SQL 存储 关系型数据库
学习MySQL的第一天:MySQL概述(基础篇)
学习MySQL的第一天:MySQL概述(基础篇)
43 0
学习MySQL的第一天:MySQL概述(基础篇)
|
存储 SQL 缓存
【MySQL我可以讲一个小时】
【MySQL我可以讲一个小时】
120 0
【MySQL我可以讲一个小时】
|
SQL 存储 缓存
一小时让你彻底理解 MySQL
一小时让你彻底理解 MySQL 在写本文章开始之前我给大家说下,根据个人学历理解记录的笔记,如果有什么问题可以关注、联系我们一起讨论。本人还是建议大家多多学习体系的技术。博客不会讲解太细。
114 0
一小时让你彻底理解 MySQL
|
存储 关系型数据库 MySQL
【MySQL】关于查询某一年、某一月、某一天的查询
【MySQL】关于查询某一年、某一月、某一天的查询
115 0
【MySQL】关于查询某一年、某一月、某一天的查询
|
关系型数据库 MySQL
Mysql 日期大小比较
mysql 时间参数 年月日 时分秒 比较大小 mysql 时间参数 年月日 比较大小
|
关系型数据库 MySQL
mysql 获取某个日期所在月的第一天
select DATE_ADD( DATE_ADD(curdate(),interval -day(curdate())+1 day), interval -5 month);
1766 0