首页 > 解决方案 > 如何在 SQL 中获取日期行差异

问题描述

我有一个像下面这样的表

表格1

id  date    
--------------------
12  20-04-2019 12:35
2   20-04-2019 12:55
11  20-04-2019 11:57
7   20-04-2019 12:00
5   20-04-2019 12:05

我想得到如下

id  date                diff
----------------------------------------
12  20-04-2019 12:35    0
2   20-04-2019 12:55    20-04-2019 00:20
11  20-04-2019 11:57    20-04-2019 00:20
7   20-04-2019 12:00    20-04-2019 00:03
5   20-04-2019 12:05    20-04-2019 00:05

请帮我。

标签: mysql

解决方案


请找到包含您场景示例数据的演示:

DECLARE @TestTable TABLE (Id INT, DateValue DATETIME)

INSERT INTO @TestTable (Id, DateValue) VALUES
(12 , '04-20-2019 12:35'),
(2  , '04-20-2019 12:55'),
(11 , '04-20-2019 11:57'),
(7  , '04-20-2019 12:00'),
(5  , '04-20-2019 12:05');

SELECT Id, 
       DateValue,
       CONVERT(VARCHAR(5), DATEADD(minute, DATEDIFF(MINUTE, LAG(DateValue) OVER (ORDER BY (SELECT NULL)), DateValue), 0), 114) AS Diff
FROM @TestTable;

输出:

Id  DateValue                 Diff
------------------------------------
12  2019-04-20 12:35:00.000   NULL
2   2019-04-20 12:55:00.000   00:20
11  2019-04-20 11:57:00.000   23:02
7   2019-04-20 12:00:00.000   00:03
5   2019-04-20 12:05:00.000   00:05

推荐阅读