2014-04-16 3 views
-1

mysql에서 날짜 필드의 날짜 범위에 대해 일 및 월 부분을 선택하려고하는데이 오류가 발생합니다. "피연산자는 1 열을 포함해야합니다. ". TABLENAME는 "2014년 6월 30일 DOB가 날짜 필드가하고 $ FROMDATE와 $ TODATE는"2014년 4월 30일 "와 같은 화면에서 날짜 입력을 보유하고 "피연산자가 1 열을 포함해야합니다"라는 오류 메시지가 표시됩니다.

"SELECT * 
FROM personal 
WHERE (EXTRACT(MONTH 
       FROM dob), 
     EXTRACT(DAY 
       FROM dob)) BETWEEN '$fromdate' AND '$todate'" 

DOB 개인 날짜 필드 이름입니다

+1

$fromdate 경우 $todatemmdd의 형식이 무엇인지 'dob' 열의 데이터 유형입니까? 그리고'fromdate'와'todate'의 형식은 무엇입니까? –

답변

0

은 만 만 확인하여 DOB 열에서 월과 일 병합하기 위해 CONCAT를 사용하고 월과 일을 얻을 수 DATE_FORMAT를 사용하는 절 사이에

SELECT 
    * 
FROM 
    personal 
WHERE 
CONCAT(EXTRACT(MONTH FROM dob),'-',EXTRACT(DAY FROM dob)) 
BETWEEN '$fromdate' AND '$todate' 

더 좋은 방법을 사용하여 비교해야 당신은 열에 저장된 표준 날짜 개체가, 당신은 DATE_FROMAT에서 제공하는 형식은 한 번에 여러 값을 비교할 수 있습니다 WHERE 절을 사용하여 제공된 매개 변수

SELECT 
    * 
FROM 
    personal 
WHERE 
DATE_FROMAT(dob,'%m-%d') 
BETWEEN '$fromdate' AND '$todate' 
0

의 형식 만 한 각각 일치해야합니다. 명세서 WHERE에서

는 쉼표로 구분 된 별도의 값으로 모두 MONTHDAY을 사용하려고하지만 정확하지 않은 $fromdate$tdate와 비교된다.

Operand should contain 1 column(s) 

당신은이 같은 솔루션을 찾고 될 수있다 : 따라서

그리고

는 오류가 다음

SELECT * FROM personal 
WHERE date_format(dob, '%m%d') 
     BETWEEN '$fromdate' AND '$todate' 
+0

귀하의 솔루션을 시도한 결과이 오류가 발생했습니다. "SQL 구문에 오류가있어서 'MySQL 서버 버전에 해당하는 매뉴얼을 확인하여 올바른 구문이'WHERE DATE_FORMAT (dob, '% m- % d') '04 -01 '과 '12 -30' 'at line 1 " – emma

+0

시도한 전체 SQL 문 문자열을 게시 할 수 있습니까? –

+0

"SELECT * from 개인 어디서 DATE_FORMAT (dob, '% m- % d') '$ fromdate'와 '$ todate'"사이 "; – emma