我有一个专栏"时间"以时间作为其数据类型。
我需要获得该列中25%的值。
请帮忙。为了解决方案,我一直在墙上敲我的头。
答案 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
答案 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)