备注:测试数据库版本为MySQL 8.0
一.需求
问题:
计算当前年的天数。
二.解决方案
当前年的天数等于第二年的第一天与当前年的第一天(以日为单位)之差。
大致步骤如下:
1.找到当前年的第一天
2.给该日期加1年(即得到第二年的第一天)。
3.从第二步的结果中减去当前年第一天
select d1,
date_add(d1,interval 1 year) d2, -- 下一年第一天
datediff(date_add(d1,interval 1 year),d1) days -- 求出两个日期之间间隔的天数
from
(
-- 求出本年第一天
select adddate(current_date,-dayofyear(current_date) + 1) d1
) tmp;
测试记录
mysql> select d1,
-> date_add(d1,interval 1 year) d2, -- 下一年第一天
-> datediff(date_add(d1,interval 1 year),d1) days -- 求出两个日期之间间隔的天数
-> from
-> (
-> -- 求出本年第一天
-> select adddate(current_date,-dayofyear(current_date) + 1) d1
-> ) tmp;
+------------+------------+------+
| d1 | d2 | days |
+------------+------------+------+
| 2020-01-01 | 2021-01-01 | 366 |
+------------+------------+------+
1 row in set (0.00 sec)