我有一个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,但我不确定它应该如何帮助我。当然,示例代码可以帮助我很多。
答案 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