资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

创建SQL函数计算员工加班时间

你好,韩老师有个问题请教。我想通过秒计算加班时间。规则为:加班满4小时才算加班,加班时间满8小时为加班一天,加班时间不足4小时不算加班,加班时间大于4小时小于8小时为0.5个加班。我写了一个自定义函数计算但是计算出来的结果不对。麻烦韩老师指教
CREATE FUNCTION worktime
(@startTime int)
RETURNS nvarchar(100)
AS
BEGIN
declare @rst nvarchar(500)
declare @day int
declare @hours int
declare @aa decimal
set @rst=''
set @day=@startTime/28800 --8小时算一天工作量 8小时28800秒
set @hours=@startTime% 28800/3600 --计算不够8小时,多出来的时间是多少小时
Set @aa=0.5 --常数没必要创建变量
if(@day>0) --没必要进行判断
set @rst=@day
if(@hours<4) --这个也多余
set @rst=@rst
if(@hours>=4) --只需判断是否大于等于4小时
set @rst=@rst+@aa --@rst是字符类型的不能和@aa加法运算

目前成都创新互联公司已为近千家的企业提供了网站建设、域名、网站空间网站托管运营、企业网站设计、鄂托克网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

RETURN @rst

以上函数创建之后执行结果达不到预期
select dbo.worktime(28800+14300)
结果是1
    select dbo.worktime(28800+14500)
结果是2

我将函数进行了更改和精简
CREATE FUNCTION worktime
(@startTime int)
RETURNS nvarchar(100)
AS
BEGIN
declare @rst nvarchar(500)
declare @day int
declare @hours int
set @rst='' --可以进行初始化赋值
set @day=@startTime/28800 --计算加班天数,由于@day是int类型计算结果会自动取整数部分
set @hours=@startTime% 28800/3600 --计算预先的
if(@hours>=4) --如果加班时间超过4小时按半天计算
set @rst=@day+0.5
else set @rst=@day --否则不计入加班时间
RETURN @rst
end

end


网站标题:创建SQL函数计算员工加班时间
新闻来源:http://www.cdkjz.cn/article/iphijd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220