Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 交叉申请用于计算员工工作时间的函数_Sql Server - Fatal编程技术网

Sql server 交叉申请用于计算员工工作时间的函数

Sql server 交叉申请用于计算员工工作时间的函数,sql-server,Sql Server,如何根据班次的开始和结束是工作日来计算员工的工作时间。它应该是十进制的(09:00到17:30),即8.5小时。有效轮班模式的其他示例有08:00-16:00、09:00-17:00和08:00-20:00。无需扣除任何午休时间 我已经尝试过这个功能,但需要使用交叉应用?有什么建议吗 Create function[dbo.][WorkingHours] ( @StartDate datetime, @EndDate `datetime, @StartTime time, @EndTime ti

如何根据班次的开始和结束是工作日来计算员工的工作时间。它应该是十进制的(09:00到17:30),即8.5小时。有效轮班模式的其他示例有08:00-16:00、09:00-17:00和08:00-20:00。无需扣除任何午休时间

我已经尝试过这个功能,但需要使用交叉应用?有什么建议吗

Create function[dbo.][WorkingHours]
(
@StartDate datetime,
@EndDate `datetime,
@StartTime time,
@EndTime time
)

Returns Table
as
Return
(
select convert(varchar,sum(datediff(minute,A.startDatetime,A.EndDatetime))/60)+':'+
convert(varchar,sum(datediff(minute,A.startDatetime,A.EndDatetime))%60) as TotalWorkedHours
from
(
select[calenderdate]as Date,
             convert(datetime,[calenderdate])+''+@Starttime as                             StartDatetime,
          convert (datetime,[calenderdate])+''+@EndTime as                 EndDatetime

from [dbo].[Date] D
where WeekDay not in(1,7)
and D.CalenderDate between @StartDate and @EndDate and holiday = '0'

)A

)

大家好,欢迎来到SO。似乎您有一个内联表值函数。但你似乎也把你的问题放错了地方,因为这里似乎没有问题。为什么你需要使用交叉申请?你没有得到准确的结果吗?请发布示例数据和预期输出