mysql生成日曆指令碼(年 年月 格式)

2021-08-04 05:37:16 字數 1458 閱讀 9623

create table num (i int);-- 建立乙個表用來儲存0-9的數字

insert into num (i) values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數字,方便以後計算時間

create table if

not exists day(date

date); -- 生成乙個儲存日期的表,datalist是欄位名

-- 這裡是生成並插入日期資料

insert into day(date) select

adddate(

( -- 這裡的起始日期,你可以換成當前日期

date_format("2016-1-1", '%y-%m-%d')

),num.id

) as `date`

from

(select

n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000

as id

from

num n1

cross join num as n10

cross join num as n100

cross join num as n1000

cross join num as n10000

) as num;

drop table num; -- 刪除臨時表

select date_format("2016-10-20","%y"); -- 最大2023年

create table if

not exists base_month(date varchar(10));-- 生成乙個儲存年月的表,datalist是欄位名

delimiter $$

create procedure make_yearmonth()

begin

set @y = 2016;

set @m = 1;

while @y<=2030

dowhile @m<=12

doif (@m<10) then

insert into base_month(date) values(concat(@y,"-0",@m));

else

insert into base_month(date) values(concat(@y,"-",@m));

endif; set @m = @m+1;

endwhile;

set @m = 1;

set @y = @y+1;

endwhile;

end;

$$call make_yearmonth(); -- 執行儲存過程生產資料

drop procedure make_yearmonth; -- 刪除儲存過程

根據年月生成日曆函式

go 建立函式 第一版 dobear 0922 create function fn calendar year int month int returns nvarchar max as begin declare result nvarchar max enter nvarchar 8 sele...

MSSQL 根據年月生成日曆函式

go create function fn calendar year int,month int returns nvarchar max asbegin declare result nvarchar max enter nvarchar 8 select enter char 13 char ...

Qlikview指令碼生成日曆表

多數情況下dw會給報表輸出一張比較全的標準日曆表,如果是這樣的情況,那麼可以直接從dw中讀取,所以我要寫的是dw中沒有提供並且從事實資料中提取並不完整或者太耗資源的情況,其實是可以通過指令碼自動生成乙份標準日曆表,下面就介紹一下思路。定義變數 let vdatemin num makedate 20...