我有两个时间戳(FIRSTOCCURRENCE和LASTOCCURRENCE),我需要根据NODE值计算分钟的时差。
基本上这些是我查询的表格中的三个字段。我该怎么做呢?
我的查询看起来像这样
Select
,Node
,EventID
,FirstOCCURRENCE
,LASTOCCURRENCE
From
Reporter.reporter_status
Where firstoccurrence >= DATEADD(hh, -24 GETDATE())
我是一个完整的SQL用户并试图自学
试图进一步解释我想要做的事情。我需要计算1月1日18日达拉斯首次出现与1月18日达拉斯最后一次出现之间的差异。希望这是有道理的。但是有不同的节点,所以需要计算delta。
NODE类型首次出现最后一次出现 达拉斯决议2018-01-04 12:32:02 PM 2018-01-04 12:32:32 PM 达拉斯问题2018:-1-03 11:22:01 AM 2018-01-03 11:22:01 AM
答案 0 :(得分:1)
表达式:
DateDiff(MINUTE, FirstOCCURRENCE, LASTOCCURRENCE)
计算两个值之间的分钟边界数。这通常就足够了。但如果你想在00:00:59和00:01:01中使用0而不是1,那么请转到秒并转换回来:
DateDiff(SECOND, FirstOCCURRENCE, LASTOCCURRENCE) / 60
答案 1 :(得分:0)
尝试使用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冒险好运,请不要害怕提问。
答案 2 :(得分:0)
如果你想要几分钟的差异,那么你必须这样说,像这样:
1> select datediff(minute, getdate(), dateadd(minute, 15, getdate()));
2> go
-----------
15
(1 rows affected)