创建SQL函数计算员工加班时间
admin
2023-05-10 05:21:09
0

你好,韩老师有个问题请教。我想通过秒计算加班时间。规则为:加班满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

相关内容

热门资讯

伊朗学者:特朗普访华或影响美伊... 美国总统特朗普访问中国之际,美伊停火谈判和霍尔木兹海峡危机仍未解决。伊朗学者法拉吉扎德在接受凤凰卫视...
日本版星链军事侦察网启用 日本防卫政务官若林洋平今天(5月14日)在日本国会参议院内阁委员会上称,为确保作为“反击能力”手段的...
外交部:美方务必慎之又慎处理台... 5月14日,外交部发言人郭嘉昆主持例行记者会。有记者就台湾问题提问,郭嘉昆表示,习近平主席与特朗普总...
世卫组织:全球卫生进展失衡 急... 世界卫生组织13日发布的《2026年世界卫生统计》报告显示,全球卫生领域近年来虽取得一定进展,但进展...
储量2356.87亿立方米!我... 【大河财立方消息】据中国石化,中国石化四川资阳东峰页岩气田2356.87亿立方米探明地质储量通过自然...
英国拟将中国敬业集团旗下的英钢... 有记者问:近日有英国媒体报道称,英国政府将通过相关立法,将中国敬业集团旗下的英国钢铁公司国有化。请问...
聚焦生物医药未来产业,大湾区添... 5月12日,粤港澳大湾区生物医药未来产业创新论坛暨大湾区生物医药未来产业创新中心成立大会在中山大学附...
朱雀二号改进型遥五运载火箭发射... 5月14日午间,朱雀二号改进型遥五运载火箭在东风商业航天创新试验区发射升空,将搭载的2.8吨定制化试...
7500元旅行达人与年轻创作者... 在6000-8000元这个竞争激烈的旗舰手机市场,旅行达人和年轻创作者们往往面临着两难选择:是追求极...
中美元首会晤是否讨论对台军售问... 澎湃新闻记者 聂舒翼 谢瑞强5月14日,外交部发言人郭嘉昆主持例行记者会。有记者提问,中美元首是否在...