2012-05-07 27 views
1

我有一个“创造”列其为整数,这是我插入的sqlite日期到它:为什么的strftime()将字符串转换成整数列

ContentValues vals = new ContentValues(); 
vals.put(Column._CREATED_DATE, "strftime('%s','now')"); 
db.insert(Table.ARTICLE.name, null, vals); 

令人难以置信的是,他插入strftime('%s','now')串入INTEGER列!

这是什么?

编辑:当我在SQLite浏览器中运行insert into article (created) values (strftime("%s","now")),适当的整数值插入...

+1

通常情况下,当你临时抱佛脚的东西到ContentValues希望他们都能正确转义和投入的SQLite完全按照您指定他们,即你不能用它们作为执行数据功能的快捷方式。仅仅添加一个默认值就不那么简单了,例如'created_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP'或类似的东西。 – Jens

+0

@Jens对,当查询表时如何格式化这个值?顺便说一句,我认为这是一个答案,所以如果你想,写这篇文章作为答案... – myro

回答

2

默认值添加到您的表格代替,例如

CREATE TABLE article (
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name TEXT, 
    _created_date INTEGER DEFAULT (strftime('%s', 'now')) 
); 

如果您在创建行时没有设置其列值,则这会将unix时期置于_created_date中。如果你想要一个时间戳(例如2012-05-07 13点07分58秒),将其定义为

_created_date INTEGER DEFAULT CURRENT_TIMESTAMP 
+0

YO dawg,完全是我想要的:) – myro