2014-12-22 3 views
0

SQL 문을 사용하여 MySQL의 birthDate를 기준으로 calculate the age을 시도하고 있습니다.MySQL은 생년월일을 기준으로 나이를 계산합니다.

내 생일은 varchar()이고이 형식은 1994 년 11 월 29 일 (DD/MM/YYYY)입니다.

내 SQL 문 :

그러나
SELECT DATEDIFF(YY, birthDate, GetDate()) AS Age 
FROM bookedevent be INNER JOIN account a 
ON be.bookedEventBY = a.accountName WHERE a.accountID = 1 

, 내가 MySQL의 워크 벤치에서 테스트 할 때, 나는이 오류 메시지가 무엇입니까 : 호출 DATEDIFF 잘못된 매개 변수 수를.

가이드가 있습니까?

미리 감사드립니다.

+0

사용 날짜 (GetDate()) - 대신 –

+0

'birthDate'의 개체가 누락 되었습니까? '생일 '이 속한 곳을 지정하지 않았기 때문에'INNER JOIN'이 잘못되었습니다. 생년월일 또는 생년월일 –

답변

2

MySQL에서는 SQL Server 구문을 사용하고 있습니다. 그것은 작동하지 않습니다. 당신은 TIMESTAMPDIFF()를 사용할 수 있습니다 TIMESTAMPDIFF()의 의미는 SQL Server의 DATEDIFF()보다 다른

SELECT TIMESTAMPDIFF(YEAR, birthDate, CURDATE()) AS Age 
FROM bookedevent be INNER JOIN 
    account a 
    ON be.bookedEventBY = a.accountName 
WHERE a.accountID = 1; 

하는 것으로. 그러나 TIMESTAMPDIFF()은 아마도 실제로 원하는 것에 더 가깝습니다.

+0

SQL을 테스트 할 때 null이 표시됩니다. 내 birthDate 열이 varchar()이기 때문에 그렇습니까? – hyperfkcb

+0

아마도. 날짜는 문자열이 아닌 날짜로 저장해야합니다. –

+0

문자열을 현재 날짜로 변환 할 수 있습니까? 내 친구가 그것을 사용하고 있기 때문에 나는 그 테이블의 데이터 strcuture를 바꿀 수 없기 때문에 – hyperfkcb

관련 문제