如何计算包括分钟在内的工作时间?

问题描述:

我有一个查询,根据工作时间*工资获取员工的姓名,日期,工作时间,工资和工资。如何计算包括分钟在内的工作时间?

正在计算的工作小时分钟数将被丢弃。我只在整整一个小时内获得价值。快照例如:

我主要关注的是workingHours和wageAmount

alt text

workingHours显示为5。这里是时间片快照:

alt text

正如你看到的转变开始于上午10点30分,结束于下午4点(不包括午餐时间),所以实际总时数为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相反,给你用小数点表示小时。

+0

大......我得到的是这样的一个值: – 2010-10-09 03:30:57

+0

4.514406 .... 。我需要一个简单的快捷方法来截断小数点,而不是舍入到小数点后一位,所以输出结果为4.5 ...任何想法? – 2010-10-09 03:32:08

+1

明白了........... – 2010-10-09 19:06:58

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

这将返回时间&分钟: CAST(DATEDIFF(MINUTE,开始时间,结束时间)为十进制)/ 60