算术运算时间数据类型sql server?

时间:2014-08-27 09:04:53

标签: sql sql-server

我有一个专栏"时间"以时间作为其数据类型。

我需要获得该列中25%的值。

请帮忙。为了解决方案,我一直在墙上敲我的头。

5 个答案:

答案 0 :(得分:1)

您需要将TIME转换为浮点值。根据{{​​3}},您可以通过DATETIME执行此操作,因此:

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

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

然后进行逆转换:

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

请参阅Data type conversion table

答案 1 :(得分:0)

从日期转换为Float

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

答案 2 :(得分:0)

不确定这是你能得到的最佳答案,但我是在一个查询中做到的:

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

这是一个小提琴:http://sqlfiddle.com/#!3/01b3f/7

答案 3 :(得分: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)

答案 4 :(得分:0)

这对我有用:

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

SQLFiddle