2012-04-24 54 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