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

时间:2018-01-05 16:51:44

标签: sql sql-server

我有两个时间戳(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

3 个答案:

答案 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)