gpt4 book ai didi

SQL Server,将秒转换为分钟、小时、天

转载 作者:行者123 更新时间:2023-12-02 13:28:55 40 4
gpt4 key购买 nike

我有一个数据库列,其中包含一个表示系统正常运行时间(以秒为单位)的整数值。我真的希望有一个查询能够以易于阅读的格式显示正常运行时间(天、小时、分钟),但我不太确定该怎么做。我发现的很多示例似乎都使用参数作为示例,但很少介绍如何在选择函数中使用它。

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

源数据:

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, 0, dateadd(second, tblAssets.Uptime, 0))) as varchar(4))
+ ' Day(s) ' + convert(varchar(2), dateadd(second, tblAssets.Uptime, 0), 108) +' Hour(s)'
else
convert(varchar(5), dateadd(second, tblAssets.Uptime, 0), 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)

最佳答案

取决于您想要的输出:

DECLARE @s INT = 139905;

SELECT CONVERT(VARCHAR(12), @s /60/60/24) + ' Day(s), '
+ CONVERT(VARCHAR(12), @s /60/60 % 24)
+ ':' + RIGHT('0' + CONVERT(VARCHAR(2), @s /60 % 60), 2)
+ ':' + RIGHT('0' + CONVERT(VARCHAR(2), @s % 60), 2);

结果:

1 Day(s), 14:51:45

或者:

DECLARE @s INT = 139905;

SELECT
CONVERT(VARCHAR(12), @s /60/60/24) + ' Day(s), '
+ CONVERT(VARCHAR(12), @s /60/60 % 24) + ' Hour(s), '
+ CONVERT(VARCHAR(2), @s /60 % 60) + ' Minute(s), '
+ CONVERT(VARCHAR(2), @s % 60) + ' Second(s).';

结果:

1 Day(s), 14 Hour(s), 51 Minute(s), 45 Second(s).

您可以将 60/60/24 替换为 86400 等,但我发现如果您保留/秒/分钟/小时计算,它会更好地 self 记录。如果您要反对表格,只需使用 column_name 代替 @s

关于SQL Server,将秒转换为分钟、小时、天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19298405/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com