Effettivamente SQLite accetta il tipo DATE e DATETIME per una sorta di compatibilità con altri DBMS, ma non li tratta come tipi "atomici" bensì li converte in uno dei suoi tipi secondo queste regole. Quindi un dato di tipo DATE viene convertito in NUMERIC e te lo tratta come tale (se fai una insert con un valore 2012-06-08 il DBMS inserisce 1998, ossia la differenza). Probabilmente è questa la causa dei comportamenti sospetti che ti ritrovi... Come già scritto ti consiglio di "adattarti" ai tipi di default di SQLite e implementare una tuo metodo (ad esempio timestamp numerici), altrimenti se proprio non vuoi rinunciare al tipo DATE devi utilizzare nelle tue insert anche queste funzioni. Ad esempio:
insert into tabella values (1,strftime('%Y-%m-%d','2012-06-08'))

Rispondi quotando