我有一个查询,可以根据工时*工资来获取员工的姓名,日期,工作时间,工资和计算工资。
正在计算的工作时间分钟将被丢弃。我只得到整整一小时的价值。快照示例:
我主要关心的是workHours和wageAmount
workingHours显示为5.以下是时间表快照:
如您所见,班次从上午10:30开始,到下午4:00结束(午餐时间除外),因此实际总时数为4,而不是5。
以下是计算小时数的查询摘录:
DATEDIFF(HOUR, shiftStart.timeEntered, shiftEnd.timeEntered) - DATEDIFF(HOUR, lunchStart.timeEntered, lunchEnd.timeEntered) AS workingHours,
我的问题是:
1。如何准确计算工作时间(包括分钟数)?
由于我将计算分钟数,因此我必须计算每分钟的工资,因此我必须输入以下代码来计算每分钟的工资:
ROUND((((DATEDIFF(HOUR, shiftStart.timeEntered, shiftEnd.timeEntered) - DATEDIFF(HOUR, lunchStart.timeEntered, lunchEnd.timeEntered)) * 60) * (cast(((w.wageAmount/60)-((w.wageAmount/60)%.001)) as decimal (18,3)))), 0) AS "SalaryPerMin",
答案 0 :(得分:3)
请改用DATEDIFF(minute, shiftStart.timeEntered, shiftEnd.timeEntered) * 1.0 / 60
,以小数形式给出小时。
答案 1 :(得分:1)
时间卡的东西是非常业务规则密集型的。在将所有规则放入sp之前,我会考虑你的架构。
答案 2 :(得分:0)
这将返回小时&分钟: CAST(DATEDIFF(MINUTE,StartTime,EndTime)AS DECIMAL)/ 60