【问题标题】:SQL Server date differencesSQL Server 日期差异
【发布时间】:2018-05-09 18:15:19
【问题描述】:

如何从下表中找出总天数?我尝试了DATEDIFF 函数,但我无法得到我的结果。

date                      days 
-------------------------------
2017/11/10
2017/11/12
2017/11/15

天之间的差异应该是这样的

2017/11/12-2017/11/10, 2017/11/15-2017/11/12.

【问题讨论】:

  • 您使用的是什么版本的 SQL Server?
  • Sql server 2005

标签: sql-server tsql sql-server-2005


【解决方案1】:

您可以使用LAG(SQL Server 2012 及更高版本):

CREATE TABLE t(d DATE);
INSERT INTO t(d)VALUES ('2017-11-10'), ('2017-11-12'), ('2017-11-15');

SELECT *, DATEDIFF(day, LAG(d) OVER(ORDER BY d ASC),d)
FROM t;

Rextester Demo

对于 SQL Server 2005,您可以使用:

SELECT s.*, DATEDIFF(day, s2.d, s.d) AS days
FROM (SELECT *,  ROW_NUMBER() OVER(ORDER BY d) AS rn FROM t) s
LEFT JOIN (SELECT *,  ROW_NUMBER() OVER(ORDER BY d) AS rn FROM t) s2
  ON s.rn = s2.rn+1;

Rextester Demo2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多