2013-03-09 2 views
2

이 쿼리는 mySQL DB에 작성하고 있습니다. 표 listing에는 두 개의 열 StartDate & EndDate이 있습니다. DurationDATEDIFF을 사용하여이 두 날짜 사이의 일수를 반환하고 싶습니다. 내 검색어 :NULL을 반환하는 SQL 쿼리 DATEDIFF

SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing; 

표는 기간 열에 NULL을 반환합니다.

내가 작성하는 경우,

SELECT DATEDIFF(day, StartDate, EndDate) as 'Duration' FROM listing; 

반환

Error Code: 1582. Incorrect parameter count in the call to native function 'datediff' 0.000 sec 

어떤 도움을 이해할 수있을 것이다.

+0

시작일과 종료일은 무엇입니까? –

+0

해당 열의 데이터 형식은 무엇입니까? –

답변

4

문제는 DATEDIFF()는 날짜 형식 YYYYMMDD 내가주고 있었다 StartDateEndDate의 열 입력에있을 것으로 예상이었다 MMDDYYYY했다. 나는 그것을 YYYYMMDD으로 바 꾸었습니다. 따라서 YYYYMMDD 형식의 날짜를 사용한 다음 표현식은 정상적으로 작동합니다.

SELECT DATEDIFF(StartDate, EndDate) as 'Duration' FROM listing; 
0

두 개의 매개 변수가 정확합니다. NULL을 얻는다면 아마도 그 열의 값이 날짜 또는 datetime 유형이 아니기 때문일 것입니다. MySQL의 문서에서

가 :

DATEDIFF(expr1,expr2) 
DATEDIFF() returns expr1 – expr2 expressed as a value in days from one date to the other. expr1 and expr2 are date or date-and-time expressions. Only the date parts of the values are used in the calculation. 

mysql> SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30'); 
    -> 1 
mysql> SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31'); 
    -> -31 
+0

헤이 브래드, 문제는 내가 제공 한 날짜 형식과 관련이 있습니다. YYYYMMDD 여야하며 MMDDYYYY를 제공했습니다. 나는 그것을 바꿨고 효과가 있었다. – brokenfoot