2014-11-02 4 views
0

등록 날짜가있는 학생 데이터베이스가 있습니다. 이 날짜와 오늘 날짜를 조회하고 yy 년 mm 월의 차이를 표시 할 수있는 sql에 대한 쿼리를 실행해야합니다.TIMESTAMPDIFF, 새 행의 복수 행 결과

이 두 날짜의 차이점을 해결하기 위해 TIMESTAMPDIFF를 사용하지만 하나의 값만 생성 할 수 있습니다. 전체 행에 대해 어떻게 작동시킬 수 있습니까? 이 데이터로 새 열을 만들어야합니다. 내가 마지막에 "여기서"문을 추가하면 내가 예를 들어, 지정된 ID를 얻을

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

:

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

감사 :

얻으려면 년 개월, 모듈로 연산을 사용합니다. –

+0

또한이 데이터를 영구적 인 열로 새 열에 삽입하는 방법과 결과를 수년으로 변경하는 방법에 대한 아이디어를 어떻게 얻을 수 있습니까? 예를 들어, 내가 얻은 값 중 하나는 78입니다. 6 년 6 개월, 도와 주셔서 대단히 감사합니다. –

+0

새로운 컬럼의 경우,'alter table'과'update'를 사용할 것입니다. –