實作sql產生連續日期。
使用mssql版本:MSSQL Server2017
有關日期與時間的介紹可以參考MSSQL文件:日期與時間 。
DATEDIFF()函式可以計算時間差。
語法:DATEDIFF ( datepart , startdate , enddate )
datepart:日期計算單位。
startdate:開始計算點。
enddate:結束計算點。
建立資料表
create table myDate(
mDate varchar(30) not null
)
此範例以天為單位,計算天數差。
定義參數:開始計算點、結束計算點、累加數。
從0開始累加。
declare @sdate DateTime --開始 declare @edate DateTime --結束 declare @count int --累加數 declare @aa int -- 天數差 set @sdate = '20220920' set @edate = '20220930' set @count = 0 set @aa = (select datediff(day,@sdate,@edate))
迴圈判斷:當@count小於等於@aa,迴圈會一直執行,直至條件不成立為止。
while(@count<= @aa) begin insert into myDate (mDate) values (convert(varchar,@sdate,112)) set @sdate = @sdate +1 set @count = @count +1 end
完整範例:db<>Fiddle