SQL服务器,将秒数转换为分钟,小时,天

前端之家收集整理的这篇文章主要介绍了SQL服务器,将秒数转换为分钟,小时,天前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含整数值的数据库列,该值表示以秒为单位的系统运行时间.我真的很喜欢一个查询能够以一个小时(s)小时的简单易读格式向我展示时间,但我不太清楚该怎么做.我发现的很多例子似乎都使用参数作为例子,但在select函数中如何使用它并没有多少.

我需要的时间与网站上显示内容相同.我之前尝试了一个查询,并添加了几天并删除了分钟.谁能帮我吗?

来源数据:

PDT0014 6141
PDT0008 4990
PDT0024 840227
PDT0033 2301
PDT0035 5439
PDT0005 3434
PDT0019 5482

示例代码

SELECT tblAssets.AssetName,(case when tblAssets.Uptime> (24*60*60) 
        then 
            cast(datepart(day,datediff(dd,dateadd(second,tblAssets.Uptime,0))) as varchar(4))
        +   ' Day(s) ' + convert(varchar(2),0),108) +' Hour(s)' 
    else
            convert(varchar(5),108) + ' Hour(s) Minute(s) ' 
    end) AS Uptime
FROM tblAssets

期望的查询输出

PDT0014 01:42 Hour(s) Minute(s) 
PDT0008 01:23 Hour(s) Minute(s) 
PDT0024 10 Day(s) 17 Hour(s)
PDT0033 00:38 Hour(s) Minute(s) 
PDT0035 01:30 Hour(s) Minute(s) 
PDT0005 00:57 Hour(s) Minute(s) 
PDT0019 01:31 Hour(s) Minute(s)

解决方法

我倾向于使用:
CAST(FLOOR(seconds / 86400) AS VARCHAR(10))+'d ' +
    CONVERT(VARCHAR(5),DATEADD(SECOND,Seconds,'19000101'),8)

顶部部分只是以整数形式获取您的日期,底部使用sql-Server的转换将日期转换为varchar,格式为HH:mm:ss,将秒转换为日期.

例如

SELECT  Formatted = CAST(FLOOR(seconds / 86400) AS VARCHAR(10))+'d ' +
                        CONVERT(VARCHAR(5),8),Seconds
FROM    (   SELECT  TOP 10 
                    Seconds = (ROW_NUMBER() OVER (ORDER BY Object_ID) * 40000)
            FROM    sys.all_Objects
            ORDER BY Object_ID
        ) S

Example on SQL Fiddle

注:更改CONVERT(VARCHAR(5),DATEADD(..到CONVERT(VARCHAR(8),DATEADD(..以保持结果中的秒数)

编辑

如果你不想要秒并且需要舍入到最接近的分钟而不是截断你可以使用:

SELECT  Formatted = CAST(FLOOR(ROUND(Seconds / 60.0,0) * 60 / 86400) AS VARCHAR(10))+'d ' +
                        CONVERT(VARCHAR(5),ROUND(Seconds / 60.0,0) * 60,Seconds
FROM    (   SELECT  Seconds = 3899
        ) S

我刚刚将每个引用替换为列秒:

ROUND(Seconds / 60.0,0) * 60

因此,在进行转换之前,将秒值舍入到最接近的分钟

猜你在找的MsSQL相关文章