3

我有查询,必须以 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`

这是从这里提到的。它对某些值而不是某些值给出了很好的结果。我不知道为什么。例如,请参阅下面的结果图像。这是给写 ans在此处输入图像描述

这会给出错误的输出在此处输入图像描述 ,这会导致它们之间的差异。任何人都可以提出更多方法来执行此操作以获得准确的输出。我没有改变任何东西。第一个是写答案,第二个必须是 1:00,但它显示的是 1:60。

4

1 回答 1

1
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
于 2013-10-15T07:11:06.273 回答