2012-04-24 51 views
1

我已經在我的Qt應用程序中使用下面的MySQL查詢:QSlQuery失敗的MySQL SELECT語句

query.prepare(QString("SELECT productName, value, COUNT(value), SUM(value)" 
        "FROM tblmystock" 
        "WHERE time>=\'%1\' AND time<=\'%2\'" 
        "GROUP BY productName, value").arg(startDateTime, endDateTime)); 

我收到以下錯誤:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near'>='2012-04-24 00:00:00' AND time<='2012-04-24 23:59:59:59' GROUP BY productName' at line 1 QMYSQL: Unable to execute query

即使當我嘗試bindValues,它失敗了同樣的錯誤。

但是,當我執行上的MySQL提示相同的查詢類似下面,它工作正常:

mysql> SELECT productName, value, COUNT(value), SUM(value) FROM tblmystock WHERE time>='2012-04-24 00:00:00' AND time<='2012-04-25 23:59:59' GROUP BY productName, value; 

有誰知道這個解決方法?

回答

1

time是保留關鍵字。使用反引號來逃避它。
您還可以使用between代替<=>=

WHERE `time` between '2012-04-24 00:00:00' AND '2012-04-25 23:59:59' 
+0

感謝您的答覆。我嘗試了你的建議,但我得到了同樣的錯誤。我甚至試圖改變時間trxnTime,但沒有改變! – manaila 2012-04-24 09:53:20

+0

@ user1353283:嘗試用'''替換轉義的'\'':'...'%1'和...'之間的時間' – 2012-04-24 09:56:41

+0

@jurgen d:仍然沒有幫助。我注意到問題是我的QStrings startDateTime和endDateTime,因爲當我用實際的日期時間替換它們時,它工作正常。這是它們的定義:void MyClass :: myFunc(QString&sDate,QString&eDate) { QString startDateTime = sDate +「00:00:00」; //一般報告開頭 QString endDateTime = eDate +「23:59:59」; //總報告結束...} – manaila 2012-04-24 10:16:52