0

我有一列以秒为单位的整数值,即:

Seconds
234555
1123
44567

我需要选择该列,但返回值应采用以下形式1d 13h 23m

我应该如何制定 sql 查询?

4

3 回答 3

5
select
    CAST(seconds/60/60/24 as VARCHAR) + 'd ' + 
    CAST(seconds/60/60%24 as VARCHAR) + 'h '+ 
    CAST((seconds/60)%60 as VARCHAR) + 'm ' +
    CAST(seconds%60 as VARCHAR) + 's'
from your_table

我已根据您的评论更新了我的回复

于 2013-05-21T14:07:38.910 回答
2

假设值来自名为 INTERVAL 的列,您可以使用 CONVERT 函数并为其指定“样式”代码。请参阅http://msdn.microsoft.com/en-us/library/aa237895(v=sql.80).aspx

SELECT CONVERT(varchar, DATEADD(ms, INTERVAL * 1000, 0), 114)

样式代码114表示hh:mi:ss:mmm24 小时格式,如果间隔超过一个世纪,则在年份上加上世纪。如果您不需要世纪数字,只需14用作样式代码。

于 2013-05-21T14:06:54.230 回答
1

不是一个好的解决方案,但无论如何

declare @day int
declare @tmpHour int
declare @Hour int
declare @tmpMinute int
declare @Min int

select @day = Seconds_Column/ (24*60*60),@tmpHour = Seconds_Column%(24*60*60)
from yourTable

select @Hour = @tmpHour / (60*60)
select @tmpMinute = @tmpHour%(60*60)
select @Min = @tmpMinute/60

select cast(@day as varchar) + ' day '+ 
       cast(@Hour as varchar) + ' hour ' + 
       cast(@Min as  varchar) + ' min'
于 2013-05-21T14:19:13.043 回答