0

我想获取给定月份和年份的条目日期,因为我在SQliteman中成功执行了下一个查询:

SELECT date FROM Entries WHERE strftime('%Y-%m',date) = '2013-04'

要将此查询与 QSqlQuery 一起使用,我使用以下代码

query.prepare("SELECT date FROM Entries WHERE strftime('%Y-%m',date) = ':year-:month'");
query.bindValue(":month", QString().sprintf("%02d", month));
query.bindValue(":year", QString::number(year));

但是会引发错误“参数计数不匹配” 。那是:year:month中的引号,但我必须使用它,否则查询不会返回任何结果。

如果不能使用引号,必须如何构建查询?

4

1 回答 1

0

您不能替换字符串中的参数;参数本身是整个字符串。

连接 SQL 中的字符串:

query.prepare("SELECT ... WHERE strftime(...) = :year || '-' || :month");

您还可以事先构造整个字符串:

query.prepare("SELECT ... WHERE strftime(...) = :yyyymm");
query.bindValue(":yyyymm", month + "-" + year);
于 2013-04-09T17:04:21.517 回答