【发布时间】:2015-06-02 18:51:15
【问题描述】:
我有一个 select 语句,其中 3 列和 n 行如下:
number of the equipment time some count
0128 2015-05-26 20:31:57.000 1
0128 2015-05-27 06:53:12.000 1
0128 2015-05-27 06:58:04.000 1
如何在这些时间之间找到datediff
如果记录为 2,则可以在一行中删除 max 和 min 时间,但记录数总是不同
我需要比较。例如datediff(mm,time1,time2) < 60 min then.....如果记录数不断变化,我如何比较time1-time2,time2 - time3
我的代码
DECLARE @start_date DATE, @end_date DATE, @equip varchar(4), @shift_ident varchar(2)
SET @start_date = '2015-05-27'
SET @end_date = '2015-05-27'
SET @shift_ident = '1'
SET @equip ='0128'
;with cte as (SELECT ROW_NUMBER() over(ORDER BY START_TIMESTAMP) num,
EQUIP_IDENT as eq ,
START_TIMESTAMP as time,
count(STATUS_CODE) as Zapravka
from EQUIPMENT_STATUS_TRANS
WHERE STATUS_CODE = 'O23'
AND SHIFT_DATE between @start_date and @end_date
AND @shift_ident LIKE '%' + SHIFT_IDENT + '%'
AND EQUIP_IDENT = @equip
GROUP BY EQUIP_IDENT,START_TIMESTAMP)
SELECT est.time, DATEDIFF(mm, est.time,est2.time) as duration
from cte est
join cte est2 on est.num = est2.num-1
结果
2015-05-26 20:31:57.000 0
2015-05-27 06:53:12.000 0
持续时间 = 0...为什么?
【问题讨论】:
-
预期输出是什么?你在找这样的东西吗? stackoverflow.com/questions/30588284/…
-
你想要什么输出?请进一步澄清。
-
欢迎来到stackoverflow。请阅读How to Ask。提示:编辑您的问题以包含所需的结果。
-
stackoverflow.com/questions/21073666/… 这可能就是你要找的东西
标签: sql-server sql-server-2008-r2