BEGIN DECLARE v_date datetime; ###結束日期 DECLARE v_i int;##循環次數 declare v_udate datetime; set v_i=1; set v_date='2020-01-01'; #################方法輸入區 set v_udate=DATE_FORMAT('2025-12-31','%Y-%m-%d'); while ( v_udate >= v_date) do #對學號的循環 INSERT into tb_holiday (day,type) select v_udate , CASE when date_format(v_udate,'%w') not in (0,6) then 0 ELSE 1 end ; set v_udate=DATE_FORMAT(date_add(v_udate, interval -v_i day),'%Y-%m-%d'); #set v_i=v_i+1; end while; END
附帶 date_format(v_udate,'%w'):返回當前星期幾 從0開始 0=星期天 1=星期一 2=星期二。。。。。6=星期六
dayofweek(now()) 返回比現有星期少一天