2010-04-25 65 views
1

如何確定出生日期之間的差異?如何確定同一列中的日期之間的差異?

  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. + ---------- + ---------- + ------------ +

我想獲得這樣的:

+----------+----------+------------+------------------------------------------+ 
  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 |

如果可能的話,ORDER BY DIFF DESC

謝謝你幫

維拉

回答

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 
+0

當我試着用** datediff **提出的錯誤信息。 我研究了你提到的Mysql - 參考手冊,並且選擇使用[TO_DAYS] [1],它工作正常。 非常感謝您的合作。 [1]:http://dev.mysql.com/doc/refman/5.1/zh/date-and-time-functions.html#function_to-days – Vera 2010-04-25 23:31:06