如何确定同一列中日期之间的差异?

时间:2010-04-25 14:35:13

标签: php mysql

如何确定出生日期之间的差异?

  1. + ---------- + ---------- + ------------ +
  2. | id |名字|出生|
  3. + ---------- + ---------- + ------------ +
  4. | 00001 |爪子| 2010-04-17 |
  5. | 00002 |爪子| 2010-01-31 |
  6. | 00003 |爪子| 2009-11-31 |
  7. | 00004 |爪子| 2009-09-31 |
  8. | 00005 |爪子| 2009-07-31 |
  9. | 00006 |爪子| 2008-10-31 |
  10. + ---------- + ---------- + ------------ +
  11. 我想获得这个:

    +----------+----------+------------+------------------------------------------+
    
    1. | id |名字|出生| diff |
    2. + ---------- + ---------- + ------------ + ----------- ------------------------------- +
    3. | 00001 |爪子| 2010-04-17 | diff(id1-id2)= 2010-01-31 - 2010-04-17 |
    4. | 00002 |爪子| 2010-01-31 | diff(id2-id3)= 2010-01-31 - 2009-11-31 |
    5. | 00003 |爪子| 2009-11-31 | diff(id3-id4)= 2010-01-31 - 2009-09-31 |
    6. 如果可能,请使用ORDER BY diff DESC

      感谢您的帮助

      维拉

1 个答案:

答案 0 :(得分:1)

看起来你想要使用datediff函数,它返回两个日期之间的差异。如果您希望差异始终为正,请应用abs功能。

此外,看起来您希望将表连接到自身以获取与当前行相关的行(关系定义为related_row.id = row.id + 1)。

如果不进一步了解表定义是什么,或者您希望如何显示差异,示例查询可能如下所示。

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