Excel中NSHOUR函数转换整数时间的SQL Server等效实现方法
在SQL Server中将整数时间转换为hh:mm:ss格式的方法
针对你提到的Excel场景(整数61236转成6:12:36),SQL Server里可以通过以下两种常见方式实现等效转换:
方法1:字符串拼接转换
先拆分整数的时、分、秒部分,拼接成标准时间字符串后转为time类型:
DECLARE @time_int INT = 61236; SELECT CAST( CONCAT( FLOOR(@time_int / 10000), ':', -- 提取小时 FLOOR((@time_int % 10000) / 100), ':', -- 提取分钟 @time_int % 100 -- 提取秒 ) AS TIME ) AS converted_time;
如果小时数不足两位(比如整数1236对应1:12:36),想要补零成01:12:36,可以用RIGHT('0' + CAST(部分 AS VARCHAR), 2)格式化每一部分:
DECLARE @time_int INT = 1236; SELECT CAST( CONCAT( RIGHT('0' + CAST(FLOOR(@time_int / 10000) AS VARCHAR), 2), ':', RIGHT('0' + CAST(FLOOR((@time_int % 10000) / 100) AS VARCHAR), 2), ':', RIGHT('0' + CAST(@time_int % 100 AS VARCHAR), 2) ) AS TIME ) AS converted_time;
方法2:用DATEADD构造时间
通过DATEADD函数逐步累加时、分、秒,直接生成时间值:
DECLARE @time_int INT = 61236; SELECT DATEADD(SECOND, @time_int % 100, DATEADD(MINUTE, FLOOR((@time_int % 10000) / 100), DATEADD(HOUR, FLOOR(@time_int / 10000), CAST('00:00:00' AS TIME) ) ) ) AS converted_time;
这种方法无需处理字符串拼接的格式问题,适合需要直接参与时间计算的场景。
两种方法都能实现和Excel中NSHOUR函数相同的转换效果,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

