【发布时间】:2011-09-01 16:01:11
【问题描述】:
我编写了这段代码来查找下行节点并计算上行和下行时间。此代码有效,但我想知道任何其他方式或优化此代码?计算停机时间的最佳方法是什么?有没有什么方法(交互方式)可以让用户输入日期和时间间隔?
选择 q1.nodeid、q1.VendorIcon、q1.Caption、q1.IP_Address、 q1.OutageDurationInMinutes, q2.TimeUp 从 (选择 Nodes.NodeID AS NodeID, ltrim(rtrim(Nodes.Caption)) Caption, Nodes.VendorIcon,Nodes.IP_Address, sum(DATEDIFF(hh, StartTime.EventTime, EndTime.EventTime)) 作为 OutageDurationInMinutes FROM 事件开始时间 左加入事件 EndTime On EndTime.EventType = '5' 和 EndTime.NetObjectType = 'N' 和 EndTime.NetworkNode = StartTime.NetworkNode 和 结束时间.事件时间 = ( 选择 分钟(事件时间) 从事件 在哪里 EventTime>StartTime.EventTime 和 EventType = '5' 和 NetObjectType = 'N' 和 NetworkNode = StartTime.NetworkNode ) INNER JOIN 节点开启 StartTime.NetworkNode = 节点.NodeID 在哪里 Nodes.Department = '4' AND StartTime.EventType = 1 AND StartTime.NetObjectType = 'N' AND dateadd(M, -1, getdate()) 和 getdate() 之间的 StartTime.eventtime 通过...分组 Nodes.NodeID、Nodes.Caption、Nodes.VendorIcon、Nodes.IP_Address、Nodes.LastBoot ) q1 内部联接 (选择 Nodes.NodeID AS NodeID ,ltrim(rtrim(Caption)) 字幕 ,供应商图标 ,IP地址 ,DateDiff(hour,Nodes.LastBoot,GetDate()) AS HoursUp ,CONVERT(VARCHAR(40), DATEDIFF(分钟, Nodes.LastBoot, GETDATE())/(24*60)) +'天,' + CONVERT(VARCHAR(40), DATEDIFF(分钟, Nodes.LastBoot, GETDATE())%(24*60)/60) + ' 小时和 ' + CONVERT(VARCHAR(40), DATEDIFF(分钟, Nodes.LastBoot, GETDATE())%60) +'分钟。'作为超时 FROM [节点] 在哪里 q1.NodeID=q2.NodeID 上的 dateadd(day, -30, getdate()) 和 getdate()) q2 之间的 LastBoot 按标题排序【问题讨论】:
-
您可以尝试将其发布到codereview.stackexchange.com。