我有查询,必须以HH:MM格式提供分钟。

SELECT (cast(SUM(convert(int,total)) / 60  as varchar(5))+':' +
        RIGHT('0' +cast(sum(convert(int,total) % 60) as varchar(2)),2))
FROM (SELECT  CASE(clnt_cntLngth)
          WHEN 0 THEN '15'
          WHEN 1 THEN '30'
          WHEN 2 THEN '60'
          WHEN 3 THEN '120'
          WHEN 4 THEN '300'
          ELSE '0' END as total  from dbo.clientInfo) as tbl`


here引用。对于某些值而不是某些值,它给出了良好的结果。我不知道为什么例如,请参见下面的结果图像。
这给写的答案

ANS这给出了错误的输出
这些之间有什么区别。任何人都可以建议其他方法来实现此目的以获得准确的输出。我什么都没改变。第一个是写答案,第二个必须是1:00,但显示为1:60。

最佳答案

CREATE FUNCTION [dbo].[IntToMinutes]
(
    @m int
)
RETURNS nvarchar(20)
AS
BEGIN

    DECLARE @c datetime
    DECLARE @c1 datetime
    SELECT @c =dateadd(mi,0,'00:00')
    select @c1 = dateadd(mi,@m,'00:00')

     return CONVERT(varchar(10),DATEDIFF(hh, @c, @c1) ) + ':' +
     CONVERT(varchar(10),DATEDIFF(mi,DATEADD(hh,DATEDIFF(hh, @c, @c1),@c),@c1) )
    end

关于sql - 如何将分钟转换成HH:MM格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19374995/

10-11 03:32