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 に答える