我需要根据站点计算两个时间戳之间的差异



我有两个时间戳(FIRSTOCCURRENCE和LASTOCCURRENCE(,我需要根据NODE值计算以分钟为单位的时间差。

本质上,这是我正在查询的表中的三个字段。我将如何做到这一点?

我的查询如下所示

Select
,Node
,EventID
,FirstOCCURRENCE
,LASTOCCURRENCE
From
Reporter.reporter_status
Where firstoccurrence >= DATEADD(hh, -24 GETDATE())

我是一个完全的SQL新手,并试图自学

试图进一步解释我想做什么。我需要计算 18 年 3 月 1 日达拉斯的第一次出现和 18 年 4 月 1 日达拉斯的最后一次出现之间的差异。希望这是有道理的。但是有不同的节点,所以它需要计算增量。

节点类型 首次出现 最后一次出现达拉斯决议 2018-01-04 12:32:02 下午 2018-01-04 12:32:32 下午达拉斯问题 2018:-1-03 11:22:01 上午 2018-01-03 11:22:01 上午

表达式:

DateDiff(MINUTE, FirstOCCURRENCE, LASTOCCURRENCE)

计算两个值之间的分钟边界数。 这通常就足够了。 但是,如果您希望 00:00:59 和 00:01:01 使用 0 而不是 1,请转到秒并翻译回来:

DateDiff(SECOND, FirstOCCURRENCE, LASTOCCURRENCE) / 60

如果你想要以分钟为单位的差异,那么你必须这样说,就像这样:

1> select datediff(minute, getdate(), dateadd(minute, 15, getdate()));
2> go
-----------
     15
(1 rows affected)

尝试使用 DATEDIFF([你想用小时、分钟、天、年等来衡量的东西],1stOCC,2ndOCC(

这会给你带来不同。

SELECT DATEDIFF(Day, GETDATE(), DATEADD(Hour, 641,GETDATE()))

Select ,Node ,EventID ,DateDiff(MINUTE, FirstOCCURRENCE ,LASTOCCURRENCE) as [datedifference] From Reporter.reporter_status Where firstoccurrence >= DATEADD(hh, -24, GETDATE())

我也为你做了一个例子,让你使用临时表。

DECLARE @tmp_Accounts TABLE 
( AccountId BIGINT,AccountName VARCHAR(50), StartDate DATETIME, EndDate DATETIME)
Insert into  @tmp_Accounts VALUES (1, '1st', GETDATE(), DATEADD(Hour, 123,GETDATE()))
Insert into  @tmp_Accounts VALUES (2, '2nd', GETDATE(), DATEADD(Hour, 1,GETDATE()))
Insert into  @tmp_Accounts VALUES (3, '3rd', GETDATE(), DATEADD(Hour, 2,GETDATE()))
Insert into  @tmp_Accounts VALUES (4, '4th', GETDATE(), DATEADD(Hour, 3,GETDATE()))
Insert into  @tmp_Accounts VALUES (5, '5th', GETDATE(), DATEADD(Hour, 174,GETDATE()))
SELECT 
AccountID, 
AccountName ,
DATEDIFF(MINUTE, StartDate, EndDate) as [DateDifferenceInMin]
From @tmp_Accounts

祝您在SQL冒险中好运,请不要害怕提问。

最新更新