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...