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

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:

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



本文转自 onesthan 51CTO博客,原文链接:http://blog.51cto.com/91xueit/2051566,如需转载请自行联系原作者

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
33 0
|
8月前
|
SQL
leetcode-SQL-181. 超过经理收入的员工
leetcode-SQL-181. 超过经理收入的员工
50 0
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_1 员工薪水中位数
「SQL面试题库」 No_1 员工薪水中位数
|
8月前
|
SQL
leetcode-SQL-184. 部门工资最高的员工
leetcode-SQL-184. 部门工资最高的员工
35 0
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_101 使用唯一标识码替换员工ID
「SQL面试题库」 No_101 使用唯一标识码替换员工ID
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_54 项目员工 III
「SQL面试题库」 No_54 项目员工 III
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_53 项目员工II
「SQL面试题库」 No_53 项目员工II
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_52 项目员工 I
「SQL面试题库」 No_52 项目员工 I
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_24 查询员工的累计薪水
「SQL面试题库」 No_24 查询员工的累计薪水
|
8月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_22 员工奖金
「SQL面试题库」 No_22 员工奖金