1

我正在尝试根据 UNIX 时间戳从 SQLite 数据库中提取记录,该时间戳由滚动条选择。Each record has a timestamp and a duration so when the selected timestamp is after the start time and after the start time plus the duration it's to be selected.

我写了一个查询,我认为它不仅可以工作,而且可以在我拥有但不使用 XCode 附带的 SQLite 的 SQLite 客户端中工作。

SELECT * FROM `booking` WHERE '1304168400' BETWEEN `stamp` AND (`stamp`+(`duration`*60))

这是我的查询。时间戳是选定的时间戳,戳字段是记录时间戳,持续时间是预订的长度(以分钟为单位)。

我可以看到使用我拥有的客户端工作的唯一原因是 SQLite 的版本不同,并且 BETWEEN 命令不受支持或不以相同的方式受支持。

任何建议或帮助将不胜感激。谢谢!

4

1 回答 1

2

这就是 SQLite 查询到达 SQLite 时的样子。(文字时间戳周围没有引号,没有反引号。)如果您可以使用 SQLite 打开数据库并运行此查询,则此语法应该可以工作。

sqlite> SELECT *
        FROM booking
        WHERE 1304168400 BETWEEN stamp and (stamp + (duration * 60));

用双引号保护标识符,而不是反引号。

sqlite> SELECT *
        FROM "booking"
        WHERE 1304168400 BETWEEN "stamp" and ("stamp" + ("duration" * 60));

您可以通过此查询确定正在运行的 SQLite 版本。

sqlite> select sqlite_version();
于 2011-05-04T01:04:14.597 回答