创建SQL函数计算员工加班时间
2017-12-17 21:49
513 查看
你好,韩老师有个问题请教。我想通过秒计算加班时间。规则为:加班满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
我将函数进行了更改和精简
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
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
相关文章推荐
- 创建日程时对时间的判断(通过计算时间差进行判断NSTimeInterval)
- 计算加班时间
- 使用新的java线程池技术创建固定的线程去完成任务,都完成后计算总时间
- MySQL--操作简记(创建计算字段,数据处理函数(文本,时间日期,数值))
- 计算在本地创建一万个空文件所需要的时间.
- Excel 根据上下班时间计算加班时间
- 加班开始时间小于12点,加班结束时间大于13点,计算加班时间
- 根据员工入职时间和合同期计算下一次合同签订时间
- 使用beego创建员工加班调休系统
- JAVA计算创建时间与当前时间差(天,时,分,秒)
- python脚本获取文件的创建于修改日期并计算时间差
- 2015-10-28-使用Excel来计算加班时间,剥离午休时间段
- SQL创建计算时间函数
- 查询每一个执行SQL语句的时间(创建hash分区)
- PHP 计算时间差
- Powershell计算脚本运行的时间
- C++获取当前时间和计算程序运行时间的方法
- PHP计算程序运行时间的类
- 时间的计算类CaculateDate
- python使用datetime模块计算各种时间间隔的方法