22.4.2_mysql自动生成日期表(按年份)

  • Post author:
  • Post category:mysql

1.应用场景

有时候,需要自动生成某一年的日期表(比如用于录入当年的法定节假日,或者其他需要生成一整年只含日期数据的空表,方便以后补充)

2.代码

例如:需要生成2008年的日期表

2.1. 前期准备

需要一张只包含id为1-500的表,数据如下(表怎么快速生成不做叙述)

select * from t500;

结果集:

id
1
2
3
4
5
6
500
2.2. sql代码
select DATE_ADD(
	'2008-01-01'
	,INTERVAL t500.id-1 day) as date
	-- 通过date_add函数生成本年的每一天
from t500
where t500.id<=datediff('2009-01-01','2008-01-01')
-- 本年总共的天数(本例:2008年为366天)
2.3. 结果集如下
date
2008-01-01
2008-01-02
2008-01-03
2008-01-04
2008-12-31
2.4. 生成本年的日期表

下面是其中一种写法:
(当然,也可以使用concat连接字符串year,-01-01等其他方法)

select DATE_ADD(start_day,INTERVAL t500.id-1 day) as date
from
(
	select start_day,
		DATE_ADD(start_day,INTERVAL 1 year) as end_day
	from
	(
	select DATE_ADD(CURRENT_DATE,INTERVAL -DAYOFYEAR(CURRENT_DATE)+1 day) as start_day
	) a
) a,t500
where t500.id<=DATEDIFF(end_day,start_day)
2.5. 结果集如下
date
2022-01-01
2022-01-02
2022-12-31

版权声明:本文为weixin_44286256原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。