Sql 如何将varchar转换为hh:mm:ss的日期时间格式?

Sql 如何将varchar转换为hh:mm:ss的日期时间格式?,sql,sql-server,Sql,Sql Server,我从查询中返回了以下结果: 2030 1200 1400 1545 有没有办法在SQL(SQL Server)中以hh:mm:ss格式将这些时间转换为时间 例如,上述条目将转换为以下内容: 2030 = 20:30:00 1200 = 12:00:00 1400 = 14:00:00 1545 = 15:45:00 非常感谢您的帮助。您需要stuff(): 如果查询返回字符串编号,则可以使用: . . . where charindex ('.', n) = 0; 你需要东西(): 如果查

我从查询中返回了以下结果:

2030
1200
1400
1545
有没有办法在SQL(SQL Server)中以hh:mm:ss格式将这些时间转换为时间

例如,上述条目将转换为以下内容:

2030 = 20:30:00
1200 = 12:00:00
1400 = 14:00:00
1545 = 15:45:00
非常感谢您的帮助。

您需要
stuff()

如果查询返回字符串编号,则可以使用:

. . .
where charindex ('.', n) = 0;
你需要
东西()

如果查询返回字符串编号,则可以使用:

. . .
where charindex ('.', n) = 0;

您可以创建如下函数:

CREATE FUNCTION ToTime(@myInput nvarchar(4))  
RETURNS nvarchar(7)
AS   
-- Returns the input as valid time string 
BEGIN  
    DECLARE @ret nvarchar(7);              
        SET @ret = SUBSTRING(@myInput,1,2)+':'+ SUBSTRING(@myInput,3,2)+':00'
    RETURN @ret;  
END; 
然后像这样打电话:

SELECT ToTime(2030);
SELECT ToTime(1200);
...

您可以创建如下函数:

CREATE FUNCTION ToTime(@myInput nvarchar(4))  
RETURNS nvarchar(7)
AS   
-- Returns the input as valid time string 
BEGIN  
    DECLARE @ret nvarchar(7);              
        SET @ret = SUBSTRING(@myInput,1,2)+':'+ SUBSTRING(@myInput,3,2)+':00'
    RETURN @ret;  
END; 
然后像这样打电话:

SELECT ToTime(2030);
SELECT ToTime(1200);
...

使用
格式

select format(2030 * 100,'##:##:##')

有关
格式的更多信息

使用
格式

select format(2030 * 100,'##:##:##')

关于
格式的更多信息

这似乎是我需要它做的事情。如何确保没有小数点?您应该停止将日期值作为字符串处理。您可以在前端格式化此文件,并将数据类型保留为日期。我同意,但我不负责前端。我处理的是我收到的数据。您可能收到的小数点示例是什么?例如,2030.66意味着什么?@ic3man7019使用时间(0)。仅使用
time
将数据类型默认为
time(7)
。这似乎就是我需要它做的。如何确保没有小数点?您应该停止将日期值作为字符串处理。您可以在前端格式化此文件,并将数据类型保留为日期。我同意,但我不负责前端。我处理的是我收到的数据。您可能收到的小数点示例是什么?例如,2030.66意味着什么?@ic3man7019使用时间(0)。只需使用
time
即可将数据类型默认为
time(7)
。这是可行的,但标量函数对性能影响太大。在这种情况下,这是一种过分的杀伤力。这是可行的,但标量函数对性能来说太糟糕了。在这种情况下,这是一种过分的杀伤力。