2013-04-09 77 views
2

我使用下面的SQL语句sqlite的时间戳

private static final String DATABASE_CREATE = "create table "+ TABLE_USERLOCATION + "(" 
+ COLUMN_ID+" integer primary key autoincrement, " 
+ COLUMN_LONGITUDE +" real not null, " 
+ COLUMN_LATITUDE+" real not null, " 
+ COLUMN_TIME + " timestamp not null default current_timestamp);"; 

创建数据库时,我尝试通过

cursor.getColumnIndex(GPSSqliteHelper.COLUMN_TIME) 

得到COLUMN_TIME我得-1(如此明显的错误)

但当我进入我的模拟器中的数据库目录并查看所有条目时,我看到已添加时间戳:

1 | 2.71828 | 3.14159166666667 | 2013年4月9日0时05分50秒

2 | 2.71828 | 3.14159166666667 | 2013年4月9日0时35分09秒

如何访问的日期和原因getColumnCount()返回3而不是4?

我通过this教程(我的表创建语句基本上类似于那里提供的那个)。

欢呼声

+2

你是什么'SELECT'语句或'query()'? – Sam 2013-04-09 16:25:47

+0

确保您的'COLUMN_TIME'中没有前导空格,即'public static final String COLUMN_TIME =“time”;' – jnthnjns 2013-04-09 16:41:17

+0

该光标的查询是什么? – 2013-04-09 17:06:07

回答

2

肯定来不及,但如果有人来到这里同样的问题...

COLUMN_TIME不allColumns宣布,它应该是:

private String[] allColumns = {GPSSqliteHelper.COLUMN_ID, GPSSqliteHelper.COLUMN_LONGITUDE, GPSSqliteHelper.COLUMN_LATITUDE, GPSSqliteHelper.COLUMN_TIME}

-3

sqlite不使用时间戳类型。你应该创建日期作为文本。请参阅here

这就是我所做的,然后您可以根据需要在代码中操作日期字符串。

+1

虽然它没有在该页面上列出,但[timestamp](https://www.sqlite.org/datatypes.html)是一个有效的SQLite数据类型。 – Sam 2013-04-09 16:55:30

+0

这在技术上是正确的,但从文档的外观来看,他们'鼓励'使用它们内置的日期和时间函数,并且声明他们没有专门为日期和时间留出存储类。尽管如此,我一直使用我的日期/时间戳,因为他们推荐并且从来没有问题 – Tom 2013-04-09 17:00:02

+0

,我说的是SQLite3,而不是版本2,对于混淆感到抱歉 – Tom 2013-04-09 17:02:59