在SQL Server中添加时间值

时间:2015-10-09 08:41:47

标签: sql sql-server tsql

我们的应用程序中有一个小时表,用于存储每个员工的工作时间。它有小时值如下

0.30 , 
0.30 ,
1.10

0.30表示30分钟,1.10表示1小时10分钟。因此,当我计算得到1.7的小时数时,我需要得到1.3(我需要将1.10转换为0.70)。

如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

你可以使用一些数学计算来实现你想要的......

SELECT workHours - FLOOR(workHours) + FLOOR(workHours)*0.60

样本值:

SELECT 1.10 - FLOOR(1.10) + FLOOR(1.10)* 0.60
  

结果:0.70

答案 1 :(得分:0)

一个简单的解决方案是将时间存储在几分钟内,使算术变得简单。然后在表示层将其转换为所需的格式。

答案 2 :(得分:0)

将1.1转换为0.7

(INT(1.1)* 60 + 1.1%1 * 10)/100=.7

答案 3 :(得分:0)

试试这样:

DECLARE @tbl TABLE(TimeValue VARCHAR(100));
INSERT INTO @tbl VALUES
 ('0.30'),('0.30'),('1.10');

WITH Splitted AS
(
    SELECT CAST('<x>' + REPLACE(TimeValue,'.','</x><x>') + '</x>' AS XML) AS vals
    FROM @tbl
)
,TheSplittedSums AS
(
    SELECT SUM(vals.value('/x[1]','int')) AS valHour
          ,SUM(vals.value('/x[2]','int')) AS valMinute
    FROM Splitted
)
SELECT valHour*60 + valMinute 
FROM TheSplittedSums 

提供130(分钟)