我有一个查询,可获取员工的姓名,日期,工作时间,工资,并根据工作时间*工资计算工资。
正在计算的工作时间的分钟数将被丢弃。我只能在一小时内获得价值。快照示例:
我主要关心的是工作时间和工资
workingHours显示为5。这是时间表快照:
如您所见,轮班开始于10:30 AM,结束于4:00 PM(不包括午餐时间),因此实际总时数是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",
最佳答案
使用DATEDIFF(minute, shiftStart.timeEntered, shiftEnd.timeEntered) * 1.0 / 60
代替,以小时为单位。