2010-03-29 19 views
0

Je dois lire la valeur de la colonne de la requête suivanteIphone: Comment lire la valeur de retour de la fonction strftime SQLite

SELECT strTime ('% Y-% m', created_at) comme champ de la table GROUP BY champ

le type de champ de colonne est 3 (je suppose que c'est blog), mais j'ai besoin de chaîne

Comment le faire?

Mise à jour

const char * sql = « SELECT CAST (strftime ('% Y', created_at) comme ENTIER) que l'année FROM table GROUP BY année

si (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)]; 

ce code me donne 3460 comme année

(avoir vérifié CAST entier, et jeté comme varchar et la fonction sqlite3_column_text)

+0

Je l'ai résolu en créant le terrain pour l'année seperating, pas élégant, mais la solution ci-dessus ne fonctionne pas dans toutes les variantes –

Répondre

1

Tant que created_at a un format de chaîne de temps comme indiqué dans le sqlite docs, il n » Quel que soit le type de stockage utilisé dans un tuple particulier (bien que vous puissiez le savoir en utilisant la fonction typeof). Le résultat de la fonction strftime (vous l'avez alias field) est le texte ou null.

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 
+0

ont les mêmes résultats dans le Gestionnaire SQLite, mais ne peut pas récupérer les données valides –