如何计算工作时间,包括会议纪要?

时间:2010-10-09 02:08:44

标签: sql sql-server tsql

我有一个查询,可以根据工时*工资来获取员工的姓名,日期,工作时间,工资和计算工资。

正在计算的工作时间分钟将被丢弃。我只得到整整一小时的价值。快照示例:

我主要关心的是workHours和wageAmount

alt text

workingHours显示为5.以下是时间表快照:

alt text

如您所见,班次从上午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",

3 个答案:

答案 0 :(得分:3)

请改用DATEDIFF(minute, shiftStart.timeEntered, shiftEnd.timeEntered) * 1.0 / 60,以小数形式给出小时。

答案 1 :(得分:1)

时间卡的东西是非常业务规则密集型的。在将所有规则放入sp之前,我会考虑你的架构。

答案 2 :(得分:0)

这将返回小时&分钟: CAST(DATEDIFF(MINUTE,StartTime,EndTime)AS DECIMAL)/ 60