;WITH CTE AS
(
SELECT
DATEDIFF(SECOND,sqlserver_start_time,GETDATE()) AS started_last_time_s
FROM sys.dm_os_sys_info
)
,CTE2 AS
(
SELECT
started_last_days = started_last_time_s / 86400,
started_last_time_s = started_last_time_s - (started_last_time_s / 86400) * 86400
FROM CTE
)
,CTE3 AS
(
SELECT
started_last_days,
started_last_hours = started_last_time_s / 3600,
started_last_time_s = started_last_time_s - (started_last_time_s / 3600) * 3600
FROM CTE2
)
,CTE4 AS
(
SELECT
started_last_days,
started_last_hours,
started_last_minutes = started_last_time_s / 60,
started_last_time_s = started_last_time_s - (started_last_time_s / 60) * 60
FROM CTE3
)
,CTE5 AS
(
SELECT
started_last_days,
started_last_hours,
started_last_minutes,
started_last_seconds = started_last_time_s
FROM CTE4
)
SELECT
sqlserver_start_last_time = RTRIM(started_last_days) + ' days '
+ RTRIM(started_last_hours) + ' hours '
+ RTRIM(started_last_minutes) + ' minutes '
+ RTRIM(started_last_seconds) + ' seconds'
FROM CTE5
在我的机器下,运行结果为:
sqlserver_start_last_time
------------------------------------------------------------------------------
5 days 11 hours 27 minutes 47 seconds
(1 row(s) affected)

本文介绍了一种使用 SQL Server 的系统函数 DATEDIFF 和动态管理视图 sys.dm_os_sys_info 来精确计算 SQL Server 实例启动以来的时间。通过递归地分解秒数为天、小时、分钟和秒,该查询提供了直观易读的运行时长。
302

被折叠的 条评论
为什么被折叠?



