2013-05-10 38 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 2013-05-10 18:29:06

+0

@sgeddes ShipDate顯然是一個文本字段 – cheesemacfly 2013-05-10 18:30:00

+0

它的文本字段,而不是「日期」字段... – 2013-05-10 18:30:39

回答

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 

和周圍的日期添加引號並重新安排的日期yyyy-mm-dd

+0

thanks..works like sql上的魅力,請看我更新的問題,不知道如何在PHP中做到這一點 – 2013-05-10 18:33:33

+2

看看** Prepared Statements **並使用[PDO](http://php.net/ pdo)或[MySQLi](http://php.net/mysqli)。 – 2013-05-10 18:36:28

1

由於並按ShipDate是文本字段,以便BETWEEN運營商沒有的情況下,正確評估的文本數據,所以你查詢失敗。將您的文本數據轉換爲日期使用STR_TO_DATE()

+0

你能告訴我如何更新這個PHP代碼嗎? – 2013-05-10 18:36:22

相關問題