0

次のクエリの列の値を読み取る必要があります

SELECT strtime('%Y-%m', created_at) as field FROM table GROUP BY field

列フィールドのタイプは 3 (ブログだと思います) ですが、文字列が必要です

どうすればいいですか?

更新しました

const char* sql = "SELECT CAST(strftime('%Y', created_at) as INTEGER) as year FROM table GROUP BY year

if (SQLITE_OK == sqlite3_prepare_v2([AppDelegate db], sql, -1, &queryhandle, NULL)){ while(SQLITE_ROW == sqlite3_step(クエリハンドル)){

   NSSTring* year  = [NSString stringWithFormat:@"%d",sqlite3_column_int(queryhandle, 0)];

このコードは、年として3460を返します

(整数としてのキャスト、varchar および sqlite3_column_text 関数としてのキャストをチェック済み)

4

1 に答える 1

1

sqlite docscreated_atで指定されている時間文字列形式を持っている限り、特定のタプルでどのストレージ タイプが使用されているかは問題ではありません (ただし、) 関数を使用して調べることができます。関数の結果( としてエイリアスを付けました) は、テキストまたは null のいずれかです。typeofstrftimefield

CREATE TABLE t (x BLOB);
INSERT INTO t VALUES ("2010-03-29\x0"), ("2010-03-28");
SELECT strftime("%Y-%m", x), typeof(strftime("%Y-%m", x)), typeof(x) FROM t;
|null|text
2010-03|text|text
于 2010-03-29T15:03:53.273 に答える