2014-08-27 3 views

답변

1

TIME을 부동 소수점 값으로 변환해야합니다. 할 다음 역 변환을

DECLARE @d time = '03:00:00'; 

SELECT CONVERT(float, CONVERT(datetime, @d)) * 0.25 -- this will be 25% of the value in float 

을 그리고 : Data type conversion table에 따르면 당신이 그렇게, DATETIME를 통해 할 수

DECLARE @f float = 0.03125; -- this is result of previous select. 

SELECT CONVERT(time, CONVERT(datetime, @f)) -- Result = 00:45:00 

따라서, 귀하의 질의에는 다음과 같습니다

SELECT ResultTime = CONVERT(time, CONVERT(datetime, (CONVERT(float, CONVERT(datetime, TimeColumn)) * 0.25))) 
FROM Table 

DEMO보기

+0

당신은 천사입니다 @ 루슬란 Veselov. 엄청 고마워!!!!! –

0

날짜를 플로트로 변환

DECLARE @d time =getdate() 
print @d 
SELECT CONVERT(float , CONVERT(datetime, @d)) * 0.25 
+0

그는 'TIME' 데이터 유형의 열을 가지고 있습니다. 그래서 그는 시간을 부유시킬 수 없습니다. 그리고'DATE '와'FLOAT'_ 사이의 _ 변환은 허용되지 않습니다. –

0
declare @time NUMERIC 

set @TIME=(select cast(replace(replace(cast(cast(getdate() as time) as varchar),':',''),'.','') as NUMERIC)*.25) 

IF LEN(@TIME)=12 BEGIN 
SELECT '0'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),0,2)+':'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),3,2)+':'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),5,2)+'.'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),7,13) 
END 
ELSE 
SELECT SUBSTRING(CAST(@TIME AS VARCHAR(20)),0,2)+':'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),3,2)+':'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),5,2)+'.'+SUBSTRING(CAST(@TIME AS VARCHAR(20)),7,13) 
0

이 나를 위해 일한 : 여기

SELECT CONVERT(TIME, 
     CONVERT(DATETIME, 
     CONVERT(FLOAT, 
     CONVERT(DATETIME, field))/4)) 

은 바이올린의

select convert(varchar, dateadd(s, datediff(s, '00:00:00' , t) * .25, '00:00:00'), 8) 

SQLFiddle