Я хочу получить дату записи для данного месяца и года, для которых я успешно выполню в 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));
Но ошибка «Несоответствие количества параметров» Поднялся. Это для цитат в :год а также :месяц, но я должен использовать его, или запрос не возвращает никакого результата.
Как должен строиться запрос, если нельзя использовать кавычки?
Вы не можете заменить параметры внутри строк; Сами параметры являются целыми строками.
Объединить строки в SQL:
query.prepare("SELECT ... WHERE strftime(...) = :year || '-' || :month");
Вы также можете создать всю строку заранее:
query.prepare("SELECT ... WHERE strftime(...) = :yyyymm");
query.bindValue(":yyyymm", month + "-" + year);
Других решений пока нет …