2012-05-07 29 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