Sql server 交叉申请用于计算员工工作时间的函数
如何根据班次的开始和结束是工作日来计算员工的工作时间。它应该是十进制的(09:00到17:30),即8.5小时。有效轮班模式的其他示例有08:00-16:00、09:00-17:00和08:00-20:00。无需扣除任何午休时间 我已经尝试过这个功能,但需要使用交叉应用?有什么建议吗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
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。似乎您有一个内联表值函数。但你似乎也把你的问题放错了地方,因为这里似乎没有问题。为什么你需要使用交叉申请?你没有得到准确的结果吗?请发布示例数据和预期输出