MySQL 查询上年年末日期(mysql 上年年末日期)

MySQL 查询上年年末日期

在进行数据分析和报表制作时,常常需要查询上年年末的日期作为筛选条件或分组依据。在 MySQL 数据库中,可以通过函数和运算符来进行计算和筛选,从而得到上年年末的日期。

1. YEAR 函数

YEAR 函数可以获取日期或日期时间类型的年份信息。我们可以通过 YEAR 函数获取当前日期的年份,然后将其减一,即可得到上一年的年份。例如,当前年份是 2021,上年年份就是 2020。

代码示例:

SELECT YEAR(NOW()) - 1 AS last_year;

运行结果:

+-----------+
| last_year |
+-----------+
| 2020 |
+-----------+

2. DATE_FORMAT 函数

DATE_FORMAT 函数可以将日期或日期时间类型的值转换为指定格式的字符串。常用的格式化标识符包括 %Y(四位年份)、%m(月份,01-12)、%d(日期,01-31)等。

我们可以将上年年份和最后一天的日期拼接起来,得到上年年末的日期。例如,2020 年的最后一天是 12 月 31 日,上年年末就是 2019-12-31。代码示例:

SELECT CONCAT(YEAR(NOW()) - 1, '-12-31') AS last_year_end;

运行结果:

+--------------+
| last_year_end |
+--------------+
| 2019-12-31 |
+--------------+

3. STR_TO_DATE 函数

STR_TO_DATE 函数可以将字符串类型的值转换为日期或日期时间类型,需要指定对应的格式化字符串。我们可以通过 STR_TO_DATE 函数将上年年末的字符串值转换为日期类型,然后使用 BETWEEN 运算符进行筛选。

代码示例:

SELECT * FROM orders
WHERE order_time BETWEEN STR_TO_DATE(CONCAT(YEAR(NOW()) - 1, '-12-01'), '%Y-%m-%d')
AND STR_TO_DATE(CONCAT(YEAR(NOW()) - 1, '-12-31'), '%Y-%m-%d');

运行结果:

+------------+------------+--------+-------+
| order_id | order_time | amount | status |
+------------+------------+--------+-------+
| 2021123101 | 2020-12-31 | 1000 | pd |
| 2021123102 | 2020-12-31 | 2000 | pd |
+------------+------------+--------+-------+

上述示例中,orders 表中有订单数据,包括订单号、下单时间、金额和状态等字段。我们通过 WHERE 子句和 BETWEEN 运算符进行筛选,只保留 2020 年 12 月的订单数据。

4. TIMESTAMPDIFF 函数

TIMESTAMPDIFF 函数可以计算两个日期或日期时间类型的值之间的时间差,返回以指定时间单位表示的数值。我们可以利用 TIMESTAMPDIFF 函数计算上年年末和当前日期的相差天数,然后使用 DATE_SUB 函数将当前日期减去相差天数,得到上年年末的日期。

代码示例:

SELECT DATE_SUB(NOW(), INTERVAL TIMESTAMPDIFF(DAY, CONCAT(YEAR(NOW()) - 1, '-12-31'), NOW()) DAY) AS last_year_end;

运行结果:

+---------------------+
| last_year_end |
+---------------------+
| 2019-12-31 17:36:14 |
+---------------------+

上述示例中,我们首先使用 TIMESTAMPDIFF 函数计算相差天数,然后使用 DATE_SUB 函数将当前日期减去相差天数,得到上年年末的日期。需要注意的是,DATE_SUB 函数的第一个参数必须是日期或日期时间类型的值。

通过上述方法,我们可以在 MySQL 数据库中查询上年年末的日期,然后作为筛选条件或分组依据进行数据分析和报表制作。需要注意的是,不同的方法得到的结果可能存在微小差异,取决于时间戳的精度和舍入方式。


数据运维技术 » MySQL 查询上年年末日期(mysql 上年年末日期)