我正在尝试从基于UNIX时间戳的SQLite数据库中提取记录,该时间戳由滚动条选择。每条记录都有一个时间戳和一个持续时间,所以当选定的时间戳在开始时间之后和开始时间加上它的持续时间之后。
我写了一个查询,我不仅认为应该可以工作,而且还可以在我有的SQLite客户端中工作但不使用随XCode一起提供的SQLite。
SELECT * FROM `booking` WHERE '1304168400' BETWEEN `stamp` AND (`stamp`+(`duration`*60))
这是我的查询。时间戳是选定的时间戳,戳记字段是记录时间戳,持续时间是预订的长度,以分钟为单位。
我可以看到使用我的客户端工作的唯一原因是SQLite的版本不同,不支持BETWEEN命令或不支持BETWEEN命令。
任何建议或帮助将不胜感激。 谢谢!
答案 0 :(得分: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();