SQLite中的插入时间(以及更新/选择)

时间:2010-12-30 18:19:17

标签: sql sqlite

我有一个SQLite数据库,其中包含4个字段的表。 create语句是:
CREATE TABLE [time] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[from] TIME NOT NULL,
[until] TIME NOT NULL,
[message] TEXT NOT NULL,
)

创建后我想添加一些测试数据。为此,我使用:
INSERT INTO time('from','until','message') VALUES('00:00','01:00','test')

数据库中的结果是
id = 1
from = 0:00:00
until = 0:00:00
message = test

显然时间不对,这意味着它不是我想要的。插入语句有什么问题? 我已经找到了this website,但我不确定它应该如何帮助我。当然,示例代码可以帮助我很多。

1 个答案:

答案 0 :(得分:1)

我无法重现您的结果,我得到与dkarp相同的结果。您不必为sqlite表中的列分配数据类型,因此,如果您指定了无效的数据类型,则会被忽略。在您的情况下,您的文本值保存为文本。

根据{{​​3}},

sqlite没有TIME数据类型,因此您可以将TEXT指定为“from”和“until”列的关联。将值保存为包含日期和时间的字符串而不是单独的时间更有意义......如下所示:

sqlite> CREATE TABLE [time] (
   ...> [id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
   ...> [from] TEXT NOT NULL,
   ...> [until] TEXT NOT NULL,
   ...> [message] TEXT NOT NULL
   ...> );
sqlite> 
sqlite> 
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 00:00',date('now') || ' ' || '01:00','test');
sqlite> INSERT INTO time('from','until','message') VALUES(date('now') || ' 14:00',date('now') || ' ' || '15:30','test');
sqlite> 
sqlite> SELECT * from time;
1|2010-12-30 00:00|2010-12-30 01:00|test
2|2010-12-30 14:00|2010-12-30 15:30|test