【发布时间】:2011-02-25 05:22:05
【问题描述】:
我有一个 Sqlite 数据库,我想在其中选择 TIMESTAMP 列中的值在某个日期之前的行。我认为这很简单,但我无法完成。我试过这个:
SELECT * FROM logged_event WHERE logged_event.CREATED_AT < '2010-05-28 16:20:55'
以及它的各种变体,例如日期函数。我已经阅读了http://sqlite.org/lang_datefunc.html 和http://www.sqlite.org/datatypes.html,我希望该列是数字类型,并且将在 unix 时间戳值上进行比较。显然不是。有谁能帮忙吗?如果这很重要,我会在 Sqlite Expert Personal 中进行尝试。
编辑:
这里是类型表说明:
CREATE TABLE [logged_event]
(
[id] INTEGER NOT NULL PRIMARY KEY,
[created_at] TIMESTAMP,
[name] VARCHAR(64),
[data] VARCHAR(512)
);
以及测试数据:
INSERT INTO table VALUES(1,'2010-05-28T15:36:56+0200','test','test');
INSERT INTO table VALUES(2,'2010-05-28T16:20:49+0200','test','test');
INSERT INTO table VALUES(3,'2010-05-28T16:20:51+0200','test','test');
INSERT INTO table VALUES(4,'2010-05-28T16:20:52+0200','test','test');
INSERT INTO table VALUES(5,'2010-05-28T16:20:53+0200','test','test');
INSERT INTO table VALUES(6,'2010-05-28T16:20:55+0200','test','test');
INSERT INTO table VALUES(7,'2010-05-28T16:20:57+0200','test','test');
【问题讨论】:
-
你运行的是什么版本的 SQLite? 3.x.x 文档没有定义名为 TIMESTAMP 的列在类型关联中被强制转换为什么。 sqlite.org/datatype3.html
-
Sqlite 3. 因为不在有限文本类型(TEXT、BLOB 等)中的所有内容都是数字的,根据文档,我假设 TIMESTAMP 将是数字类型。值得注意的是,我是通过 Propel ORM 映射器创建这个表的,它是一个自动生成的表,所以我不能轻易切换到另一种类型。我想如果我能让这个专栏表现得像 DATETIME,我就成功了。