How to determine the difference among dates in the same column?
How to determine the difference among dates of birth?
- +----------+----------+------------+
- | id | name | birth |
- +----------+----------+------------+
- | 00001 | Claws | 2010-04-17 |
- | 00002 | Claws | 2010-01-31 |
- | 00003 | Claws | 2009-11-31 |
- | 00004 | Claws | 2009-09-31 |
- | 00005 | Claws | 2009-07-31 |
- | 00006 | Claws | 2008-10-31 |
- +----------+----------+------------+
I would like to obtain this:
+----------+----------+------------+------------------------------------------+
- | id | name | birth | diff |
- +----------+----------+------------+------------------------------------------+
- | 00001 | Claws | 2010-04-17 | diff (id1-id2) = 2010-01-31 - 2010-04-17 |
- | 00002 | Claws | 2010-01-31 | diff (id2-id3) 开发者_如何学C= 2010-01-31 - 2009-11-31 |
- | 00003 | Claws | 2009-11-31 | diff (id3-id4) = 2010-01-31 - 2009-09-31 |
If possible, ORDER BY diff DESC
Thank you for helping
Vera
It looks like you'll want to use the datediff function, which returns the difference between two dates in days. Apply the abs function, if you want the difference to always be positive.
Also, it looks like you want to join the table to itself to get the row related to the current one (relation defined as related_row.id = row.id+1).
Without further knowledge of what the table definition is, or exactly how you want the differences displayed, a sample query might look like below.
select
t.id,
t.name,
t.birth,
abs(datediff(t.birth,t2.birth)) as diff
from table t
inner join table t2 on (t.id+1) = t2.id
order by abs(datediff(t.birth,t2.birth)) desc
精彩评论