2014-11-02 24 views
0

我有一個學生數據庫,它有一個註冊日期列。我需要在sql上運行一個查詢,查看這個日期和今天的日期,並顯示yy年 - 毫米月的差異。TIMESTAMPDIFF,新列上的多行結果

我正在使用TIMESTAMPDIFF來計算這些日期之間的差異,但只能生成一個值,我如何適應它來解決整行問題?我需要用這些數據創建一個新列。

這是查詢:

SELECT TIMESTAMPDIFF(MONTH, CURDATE(), (SELECT time_enrolled FROM student)) 
AS newDate 

如果我在最後加「其中」聲明我得到例如指定id:

SELECT TIMESTAMPDIFF(MONTH, CURDATE(), (SELECT time_enrolled FROM student WHERE f_id = 4)) 
AS newDate 

回答

0

不要使用子查詢。你原來的查詢應該是:如果它在一個標量環境中返回多行

SELECT TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled) AS newDate 
FROM student; 

子查詢會產生一個錯誤 - 比如在select語句,返回一個值。

如果您願意,您可以在此查詢中添加適當的where子句。

編輯:

要獲得年月,使用模運算:

SELECT floor(TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled)/12) as years, 
     mod(TIMESTAMPDIFF(MONTH, CURDATE(), time_enrolled), 12) as months 
FROM student; 
+0

由於該訣竅。 – 2014-11-02 16:48:33

+0

另外,如何將這些數據作爲永久性列插入到新列中,以及如何將結果更改爲多年的任何想法,例如,我得到的其中一個值是78,如何將它格式化爲顯示爲6年6個月,非常感謝您的幫助。 – 2014-11-02 21:59:07

+0

對於新的列,你可以使用'alter table'和'update'。 – 2014-11-03 03:02:30