【发布时间】:2011-03-26 02:18:39
【问题描述】:
我有以 YYYY-MM-DD HH:MM:SS 形式存储的事件时间。
我要做的是找到在前一个触发器之后超过 7 小时发生的所有事件实例。在阅读 SQLite Date 文档后,我不确定最简单的方法。我想我将不得不以某种方式使用 strftime,但我真的不知道如何处理它。
这是我必须构建的基本查询:
SELECT * FROM Event WHERE Event.DateTime (is more than 7 hours after) (SELECT Trigger.DateTime FROM Trigger WHERE Event.DateTime > Trigger.DateTime)
我目前的测试数据是这样设置的:
DROP TABLE IF EXISTS "Event";
CREATE TABLE "Event" ("DateTime" TEXT, "ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE );
INSERT INTO "Event" VALUES('2000-01-01 08:00:00',1);
INSERT INTO "Event" VALUES('2000-01-01 09:00:00',2);
INSERT INTO "Event" VALUES('2000-01-01 14:00:00',3);
INSERT INTO "Event" VALUES('2000-01-01 15:00:00',4);
INSERT INTO "Event" VALUES('2000-01-01 20:00:00',5);
DROP TABLE IF EXISTS "Trigger";
CREATE TABLE "Trigger" ("DateTime" TEXT, "ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE );
INSERT INTO "Trigger" VALUES('2000-01-01 00:00:01',1);
INSERT INTO "Trigger" VALUES('2000-01-01 10:00:01',2);
所以它应该从事件中返回 1、2 和 5,因为这些是触发后超过 7 小时的事件。
【问题讨论】:
标签: sql sqlite datetime duration strftime