SQL Server根据小时值计算“速率”



在我们的应用程序中,我们遵循以下模式来节省员工花费的时间。

  • 30分钟= 0.30
  • 1小时= 1

所以如果一个员工工作1小时30分钟,那么小时值将是1.30.

我们还使用下面的公式计算每个员工的工资。

wages = rate * hours  

如果一个雇员的时薪是50$,那么他1小时30分钟的工资就是75$。但是根据我们的数据结构我们得到了

wages = 50 * 1.30 = 65    

我怎样才能得到正确的工资?

(注意:我们不允许改变表中的数据结构。即使1小时30分钟为1.50)

Thanks for the help

下面是如何将数字转换为小时数的示例,您可以将其乘以工资。

declare @t decimal(5,2)=1.3
/* converting to hours */
select cast(@t as int)+@t%1*100/60
    cast(substring('1.30',charindex('.','1.30')+1,len('1.30')) as float)/60
DECLARE @Hours DECIMAL(18,2)
DECLARE @Rate MONEY
SET @Rate = 50
SET  @Hours = 1.3
SELECT (CAST(@Hours AS INT) + (@Hours - CAST(@Hours AS INT))/.6)*@Rate

你可以试试:

DECLARE @col FLOAT
SET @col = 1.30
DECLARE @hours FLOAT
SET @hours = (SELECT FLOOR(@col) + (@col - FLOOR(@col))/0.6)

THEN wages = rate * @hours

最新更新