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(queryhandle)){

   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 回答