2010-03-17 8 views
2

MySQL DATE 열을 사용하여 날짜 이후로 개월 수와 년 수를 구할 수있는 방법이 있습니까?Mysql - 월 및 연도 수

그래서 2009 년 1 월 1 일을 입력하면 1 년, 3 개월을 원합니다.

+0

글쎄, 2010 년, 1 년이 될거야. 그리고 현재 3 월 17 일에 3 개월이 넘었습니다. 그래서 jwzk이 옳습니다. –

답변

3

DateDiff 두 날짜 사이의 일의 차이를 반환 할 수 있습니다. 거기에서 직접 수학을해야 할 수도 있습니다. 모든 논리를 사용하여 저장 프로 시저를 만들 수 있지만 SQL의 대부분은 함수 언어로 설계되지 않았습니다.

편집 : 찾고있는 정보를 찾았습니다. 이 시도 :

DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), <date>)), '%c months and %Y years') 
+0

datediff() 결과에서 개월을 추출하기가 어려울 수 있습니다. 그 이유는 달의 일수가 달라지기 때문입니다. 윤년을 무시하면 연도가 가까워집니다. –

0
select mnth as months_between, mnth/12 as years_between 
from 
(select (year(<current date column>) - year(<older date column>))*12 + 
     (month(<current date column>) - month(<older date column)) as mnth 
    from <tables with date columns> 
    where <conditions to get your rows with the dates you need to compare> 
) 
또한

참조 Anthony Mollinaro의 SQL Cookbook, 날짜 산술에 대한 8 장

+1

오늘 날짜를 사용하려면 현재 날짜 열로 'NOW()'를 사용할 수 있습니다. –

+0

2009/03/15 2009/02/16 같은 상황이 발생할 수 있으므로 100 % 정확하지는 않습니다. 이것은 1 개월이 아니지만 스크립트의 반환 값이됩니다. –

+0

나는 이것이 OPs 비즈니스 요구 사항에 달려 있다고 생각합니다. 둘 사이의 비교가 1/0인지 여부입니다. 그러나 그렇습니다, 당신은 기술적으로 정확합니다. –