比如100秒
如何通过select 100
得到1分40秒这样的结果?

解决方案 »

  1.   

    declare @i int
    set @i=100
    select ltrim(@i/60)+'分'+ltrim(100%60)+'秒'1分40秒
      

  2.   

    declare @s varchar(10)                                                              
    set @s=100 
    select right(100+@s/3600,2)+'小时'+right(100+(@s%3600)/60,2)+'分钟'+right(100+@s%60,2) +'秒'
    --这里的100限制了是不能超过99小时,如果是999小时,则改100为1000 
    /*
    ---------------------- 
    00小时01分钟40秒(所影响的行数为 1 行)
    */
      

  3.   

    declare @i int
    set @i=100
    select ltrim(@i/60)+'分'+ltrim(100%60)+'秒'
      

  4.   

    declare @seconds int set @seconds = 100
    select right(convert(varchar,dateadd(second,@seconds,0),120),10)
    该方法的最大有效合法转换值为“31日23小时59分59秒”。不知道是否合用
      

  5.   

    to zoujp_xyz 您的方法如何加上小时呢?
      

  6.   

    to wzy_love_sly 
    您的方法如何加上小时呢?
      

  7.   

    这样搞定:
    declare @i bigint 
    set @i=600000
    select ltrim(@i/3600)+'时'+ltrim((@i-3600*ltrim(@i/3600))/60)+'分'+ltrim(@i%60)+'秒'
      

  8.   


    declare @seconds int
    set @seconds = 9935345
    select cast(@seconds/3600 as varchar) -- hour
      +':'+cast((@seconds%3600)/60 as varchar) -- minute
      +':'+cast(@seconds%60 as varchar) -- second
      

  9.   

    declare @i bigint 
    set @i=9935345 
    select ltrim(@i/3600)+':'+ltrim((@i%3600)/60)+':'+ltrim(@i%60)这样也行cast和ltrim有什么区别?这边都可以哦。
      

  10.   

    cast:显式类型转换
    ltrim:隐式类型转换
    在SQL中效率应该相差无几。你可以在大数据量的环境下测试一番。
      

  11.   

    当@i 为numeric(38,0)时,上面的过程都会报错:
    提示: 
    服务器: 消息 206,级别 16,状态 2,行 248 
    操作数类型冲突: int 与 void type 不兼容 
    服务器: 消息 8117,级别 16,状态 1,行 300 
    操作数数据类型 numeric 无效(运算符 modulo)。 
    怎么解决呢?多谢!