恩~來出題玩玩~
根據台灣的特休新規定如下:
(1) 6個月以上1年未滿者,3日。
(2) 1年以上2年未滿者,7日。
(3) 2年以上3年未滿者,10日。
(4) 3年以上5年未滿者,每年14日。
(5) 5年以上10年未滿者,每年15日。
(6) 10年以上者,每1年加給1日,加至30日為止。
參考資料:
https://calc.mol.gov.tw/Trail_New/html/RestDaysNYear.html
若該員工到職日為8/2開始算:
那麼SQL要如何下達,才會像以下圖表(請略過已休天數@@..)
按往例~等有人解完,再講我的參考寫法^^a
恩@@a..你們先參考看看吧~
--設定到職日
declare @Job_Date date
set @Job_Date = '2018/8/2'
--設定特休表
declare @Leave table(
StartMonth int
,EndMonth int
,SetDay int
)
declare @i int
set @i = 1
--新增特休規定
while(@i<=26)
begin
insert into @Leave
select (
case when @i = 1
then 6
else 12 * (@i - 1)
end
)
,(
case when @i = 26
then 0
else 12 * @i
end
)
,(
case
when @i = 1 then 3
when @i = 2 then 7
when @i = 3 then 10
when @i between 4 and 5 then 14
when @i between 6 and 10 then 15
when @i between 11 and 24 then 15 + @i - 10
else 30
end
)
set @i = @i +1
end
--換算特休期間
select Convert(varchar,dateadd(month,StartMonth,@Job_Date),111) as StartDate
,(
case when EndMonth = 0
then N'以上'
else Convert(varchar,dateadd(day,-1,dateadd(month,EndMonth,@Job_Date)),111)
end
) as EndDate
,SetDay
from @Leave
getdate() 可以改成員工到職日
以上程式,部份借用 allenlwh 的程式碼
//我們是每年12月才計算次年度特休
//onlinedate=到職日(例:2018/8/2)
//yeardate=次年度+到職月日(例:2019/8/2)
case
when datediff(YEAR,onlinedate,yeardate)=1 then 7
when datediff(YEAR,onlinedate,yeardate)=2 then 10
when datediff(YEAR,onlinedate,yeardate)>=3 and
datediff(YEAR,onlinedate,yeardate)<5 then 14
when datediff(YEAR,onlinedate,yeardate)>=5 and
datediff(YEAR,onlinedate,yeardate)<10 then 15
when datediff(YEAR,onlinedate,yeardate)>=10 then
case
when ((datediff(YEAR,onlinedate,yeardate)-9)+15)>30 then 30
else ((datediff(YEAR,onlinedate,yeardate)-9)+15)
end
else 0
end as offday
喔??你們是依每年12月統一計算特休壓@@..
我司按照到職日起算~
跟我以前的公司按照每年1/1統一計算有異曲同工之妙
不過這個應該只是計算@@..沒列出整個換算表..(25年吧)
如果依照勞基法,特休假的計算應該是從到職日起算,如果是年底才計算,到頭來可能會使勞工差了幾天的特休假!
我20年前的公司就是以年度計算,我離職時向公司要回差額,公司不肯,我就投訴到勞工局,最後是有拿到一萬元。 (提供參考)
特休的計算還是依勞基法的規定,按到職日計算.
只是統一在12月計算下一個年度的特休天數.
例:到職日2016/1/1.
2018/12/1計算2019年度的特休(2019/1/1~2019/12/31)
例:到職日2016/7/1.
2018/12/1計算2019年度的特休(2019/7/1~2020/6/30)
基本上不推薦這樣玩~
應該是開個TABLE~然後排程定期滾算
人員工號、報到日、可休天數、已休天數
然後查詢時SHOW TABLE內容就好了
開排程@@?
我是用一個Table設定25年的期間~
然後帶入到職日,就直接秀出(25年的期間)來了~
如果又有新規~我再換新表就可以了~
如果沒有卡控到請假~這樣是OK
可是如果你特休天數是要卡控請假~
系統判斷特休是否足夠
已休特休~未修特休....
純粹的SELECT VIEW可能不夠用!