我有两个时间戳(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冒险中好运,请不要害怕提问。