2013-05-10 4 views
-1

체크 아웃이 : image데이터가 있어도 mysql이 null을 반환하는 이유는 무엇입니까?

내 SQL 쿼리는 다음과 같습니다

SELECT @rownum := @rownum + 1 AS ID, SKU, SUM(Quantity) FROM orders, (SELECT @rownum := 0) r 
WHERE ShipDate BETWEEN 01-05-2013 AND 11-05-2013 
GROUP BY SKU 

그리고 내 코드에서, 내가 뭐하는 거지 다음

$sql = "SELECT @rownum := @rownum + 1 AS ID, SKU, SUM(Quantity) 
FROM orders, (SELECT @rownum := 0) r 
WHERE ShipDate BETWEEN {$from_date } AND {$to_date } 
GROUP BY SKU"; 

내가 사이에 떨어지는 데이터를 선택합니다 두 값.

ShipDate은 날짜 필드가 아니고 텍스트 필드입니다. 테이블을 검사하고 데이터를 보유하고 있지만 MySQL은 null을 반환합니다.

왜? 내가 뭘 잘못하고 있니?

PHP 코드를 어떻게 업데이트합니까?

이 코드 :

"SELECT @rownum := @rownum + 1 AS ID, SKU, SUM(Quantity) 
FROM orders, (SELECT @rownum := 0) r 
WHERE STR_TO_DATE(ShipDate,'%d-%m-%Y') BETWEEN {$from_date } AND {$to_date } 
GROUP BY SKU"; 

나를 위해 작동하지 않습니다.

도와주세요.

+2

을 사용하여 텍스트 데이터를 날짜로 변환합니다. ShipDate가 DateTime 또는 Date로 저장되어 있습니까? DateTime 인 경우> = 및 <=를 각각 사용하는 것이 좋습니다. – sgeddes

+0

@sgeddes ShipDate는 텍스트 필드이며, 'Date' 필드가 아닌 – cheesemacfly

+0

텍스트 필드입니다 ... –

답변

3

사용 STR_TO_DATE()는 날짜

SELECT @rownum := @rownum + 1 AS ID, 
     SKU, 
     SUM(Quantity) 
FROM orders, (SELECT @rownum := 0) r 
WHERE STR_TO_DATE(ShipDate,'%d-%m-%Y') BETWEEN '2013-05-01' AND '2013-05-11' 
GROUP BY SKU 

로 텍스트를 변환하고 날짜 주위에 따옴표를 추가하고 ShipDate 그렇게 BETWEEN 운영자가 경우에 제대로 평가되지 않습니다 텍스트 필드이기 때문에 yyyy-mm-dd

+0

감사합니다 .sql에 대한 매력과 비슷합니다. 업데이트 된 질문은 PHP에서 수행하는 방법을 잘 모르시겠습니까? –

+2

준비된 문 **을보고 [PDO] (http://php.net/)를 사용하십시오. pdo) 또는 [MySQLi] (http://php.net/mysqli). –

1

에 날짜를 재 배열하기 텍스트 데이터를 가져 오면 쿼리에 실패합니다. STR_TO_DATE()

+0

PHP 코드를 어떻게 업데이트 할 수 있습니까? –

관련 문제