【问题标题】:Calculate the Rates based on the Hour value SQL Server根据小时值 SQL Server 计算费率
【发布时间】:2015-10-21 12:41:16
【问题描述】:

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

  • 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)

感谢您的帮助

【问题讨论】:

  • 将分钟转换为小时值。

标签: sql sql-server tsql


【解决方案1】:

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

declare @t decimal(5,2)=1.3

/* converting to hours */
select cast(@t as int)+@t%1*100/60

【讨论】:

    【解决方案2】:
        cast(substring('1.30',charindex('.','1.30')+1,len('1.30')) as float)/60
    

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        【解决方案4】:

        你可以试试这个:

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

        那么wages = rate * @hours

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-09-24
          • 2017-07-12
          • 1970-01-01
          • 2021-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多