选择MySQL中行日期之间的差异

Mik*_* S. 8 mysql sql

我想计算同一个表中不同行之间的唯一日期字段的差异.

例如,给出以下数据:

   id | date
   ---+------------
    1 | 2011-01-01
    2 | 2011-01-02
    3 | 2011-01-15
    4 | 2011-01-20
    5 | 2011-01-10
    6 | 2011-01-30
    7 | 2011-01-03
Run Code Online (Sandbox Code Playgroud)

我想生成一个产生以下内容的查询:

id | date       | days_since_last
---+------------+-----------------
 1 | 2011-01-01 | 
 2 | 2011-01-02 |  1
 7 | 2011-01-03 |  1
 5 | 2011-01-10 |  7
 3 | 2011-01-15 |  5
 4 | 2011-01-20 |  5
 6 | 2011-01-30 | 10
Run Code Online (Sandbox Code Playgroud)

我将在MySQL中使用什么日期函数的任何建议,或者是否有一个子选择可以做到这一点?

(当然,我不介意WHERE date > '2011-01-01'忽略第一行.)

And*_*y M 4

相关子查询可能会有所帮助:

SELECT
  id,
  date,
  DATEDIFF(
    (SELECT MAX(date) FROM atable WHERE date < t.date),
    date
  ) AS days_since_last
FROM atable AS t
Run Code Online (Sandbox Code Playgroud)