如何将Centesimal转换为Sexagesimal

时间:2013-04-24 14:14:18

标签: sql sql-server tsql

我有这个问题:我需要将数据库中的百分比值转换为六十分之一(分钟)

SELECT 
DISTINCT RD_MAT,
SUM(CASE WHEN RD_PD IN ('421') THEN RD_HORAS ELSE 0 END) AS 'ATRASOS',
SUM(CASE WHEN RD_PD IN ('420') THEN RD_HORAS ELSE 0 END) AS 'FALTAS',
SUM(CASE WHEN RD_PD IN ('084') THEN RD_HORAS ELSE 0 END) AS 'H.EXTRA 100%',
SUM(CASE WHEN RD_PD IN ('080') THEN RD_HORAS ELSE 0 END) AS 'H.EXTRA 50% ',
SUM(CASE WHEN RD_PD IN ('082') THEN RD_HORAS ELSE 0 END) AS 'H.EXTRA NOTURNA' 
FROM SRD020 
INNER JOIN SRV020 ON RD_PD = RV_COD
   AND SRV020.D_E_L_E_T_ <> '*'
   AND SRD020.D_E_L_E_T_ <> '*'
   AND RD_MAT = '000123'
WHERE LEFT(RD_DATPGT,6) = '201304'
GROUP BY RD_MAT

H.EXTRA 100%以厘米为单位的回报是16:53。但在几分钟内是16:49。

示例:40 + 40 = 80 in centesimal。性别为40 + 40 = 1:20。我需要这个值。

2 个答案:

答案 0 :(得分:0)

所以,看起来你会想要这样的东西。我正在为VARCHAR转换输出目的,你当然不必这样做。

DECLARE @value1 INT, @value2 INT

SET @value1 = 40
SET @value2 = 50

SELECT CAST(FLOOR((@value1+@value2)/60) AS VARCHAR(50)) + ':' +  CAST((@value1+@value2)%60 AS VARCHAR(50))

答案 1 :(得分:0)

Declare @h Varchar(5)='16:53'

Select Cast(DateAdd(SS,CAST(REPLACE(@h,':','.') as Float)*60,0) as Time)

>>> 00:16:31.0000000