我们的应用程序中有一个小时表,用于存储每个员工的工作时间。它有小时值如下
0.30 ,
0.30 ,
1.10
0.30
表示30分钟,1.10表示1小时10分钟。因此,当我计算得到1.7的小时数时,我需要得到1.3(我需要将1.10
转换为0.70
)。
如何实现这一目标?
答案 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(分钟)