Sql server 在SQL Server中将时间格式从3.5转换为3:30

Sql server 在SQL Server中将时间格式从3.5转换为3:30,sql-server,tsql,Sql Server,Tsql,我在SQL Server数据库中有十进制格式的数据,我想转换时间HH:MM格式 例如: 3 to 3:00 3.25 to 3:15 3.5 to 3:30 3.75 to 3:45 非常感谢您的帮助。乘以60,再加上午夜的分钟数: CREATE TABLE #tmp ([time] DECIMAL(6,2)) INSERT INTO #tmp VALUES (3) INSERT INTO #tmp VALUES (3.25) INSERT INTO #tmp VALUE

我在SQL Server数据库中有十进制格式的数据,我想转换时间HH:MM格式

例如:

3 to 3:00    
3.25 to 3:15
3.5 to 3:30
3.75 to 3:45 

非常感谢您的帮助。

乘以60,再加上午夜的分钟数:

CREATE TABLE #tmp ([time] DECIMAL(6,2))
INSERT INTO #tmp VALUES (3)   
INSERT INTO #tmp VALUES (3.25)   
INSERT INTO #tmp VALUES (3.5)   
INSERT INTO #tmp VALUES (3.75)   

SELECT [time], CAST(CONVERT(TIME,DATEADD(SECOND, [time] * 3600, 0),108) AS TIME) FROM #tmp

DROP TABLE #tmp
declare @sample table (timeStoredWrong decimal(5,3))
insert into @sample (timeStoredWrong) values (3),(3.25),(3.5),(3.75)

select CONVERT(time,DATEADD(minute,60*timeStoredWrong,0)) as result
from @sample
结果:

result
----------------
03:00:00.0000000
03:15:00.0000000
03:30:00.0000000
03:45:00.0000000

乘以60,将该分钟数加到午夜:

declare @sample table (timeStoredWrong decimal(5,3))
insert into @sample (timeStoredWrong) values (3),(3.25),(3.5),(3.75)

select CONVERT(time,DATEADD(minute,60*timeStoredWrong,0)) as result
from @sample
结果:

result
----------------
03:00:00.0000000
03:15:00.0000000
03:30:00.0000000
03:45:00.0000000

@Harzio,请参阅此版本:您需要使用此函数转换为日期时间
convert(CHAR(5),DATEADD(MINUTE,60*[time],0),108)

完整模型如下:

DECLARE @tmp TABLE  ([Time] FLOAT)
INSERT INTO @tmp
SELECT 3 UNION ALL
SELECT 3.25 UNION ALL  
SELECT 3.5  UNION ALL     
SELECT 3.75   

SELECT 
    [Time],     
    NewTime=CONVERT(CHAR(5), DATEADD(MINUTE, 60*[time], 0), 108)
FROM @tmp
结果如下:


@Harzio,请参阅此版本:您需要使用此函数转换为datetime
convert(字符(5)、DATEADD(分钟,60*[time],0)、108)

完整模型如下:

DECLARE @tmp TABLE  ([Time] FLOAT)
INSERT INTO @tmp
SELECT 3 UNION ALL
SELECT 3.25 UNION ALL  
SELECT 3.5  UNION ALL     
SELECT 3.75   

SELECT 
    [Time],     
    NewTime=CONVERT(CHAR(5), DATEADD(MINUTE, 60*[time], 0), 108)
FROM @tmp
结果如下:


非常感谢@MEdwin的可能副本。您的查询结果是完美的!非常感谢@MEdwin。您的查询结果是完美的!感谢@Damien_不信者,您的查询可以工作,但需要额外的0000..@Harzio-如果不需要毫秒,您可以指定
时间(0)
而不是裸
时间(0)。感谢@Damien_不信者,您的查询可以工作,但需要额外的0000..@Harzio-您可以指定
时间(0)
而不是光秃秃的
时间
如果你不想要毫秒。@Melebius-好的,我添加了一些评论-我们不是来教SQL的,解释执行任务的SQL是他工作的一部分doing@Melebius-好的,我添加了一些评论-我们不是来教SQL的,解释执行任务的SQL是他工作的一部分