2013-04-24 259 views
0

我有这个疑问:我需要从数据库转换的百分值六十进制(分钟)如何转换百分制,以六十进制

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以百分比表示。 40 + 40 = 1:20,六十进制。我需要这个价值。

回答

0

因此,它看起来像你要这样的事情。我正在将其转换为VARCHAR用于输出目的,您当然不需要这样做。

DECLARE @value1 INT, @value2 INT 

SET @value1 = 40 
SET @value2 = 50 

SELECT CAST(FLOOR((@[email protected])/60) AS VARCHAR(50)) + ':' + CAST((@[email protected])%60 AS VARCHAR(50)) 
0
Declare @h Varchar(5)='16:53' 

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

>>> 00:16:31.0000000